我基本上只是想获取驱动器的可用空间(我没有 powershell)。
例如,如果我的 D: 驱动器可用空间超过 15 GB,我将采取任何措施。有趣的是,我编写的脚本在手动运行时运行良好,但在使用调度程序进行调度时则无法正常运行。
我也有设置本地启用延迟扩展在我的脚本开始时,仍然没有运气。
这是我的代码:
for /f "usebackq tokens=1-4 delims=:" %%a in ("Disk_status.txt") do ( echo %%b >TEMP_Size.txt )
for /f "usebackq tokens=1-4 delims=:" %%a in ("Disk_status.txt") do ( set FullFreeSpace=%%b )
for /f "usebackq tokens=1-2 delims=." %%a in ("TEMP_Size.txt") do ( set FreeSpace=%%a )
echo Free Space : %FreeSpace%
IF %FreeSpace% GTR 15 (
echo "Space is greater than 15 GB"
echo FREE : %FreeSpace%
GOTO TheEnd
)
我在 2003 服务器上运行它。欢迎提出任何最简单的方法来实现逻辑。
答案1
for /f "usebackq tokens=1-4 delims=:" %%a in (`type "Disk_status.txt"`) do echo %%b >TEMP_Size.txt
for /f "usebackq tokens=1-4 delims=:" %%a in (`type "Disk_status.txt"`) do set "FullFreeSpace=%%b"
for /f "usebackq tokens=1-2 delims=." %%a in (`type "TEMP_Size.txt"`) do set "FreeSpace=%%a"
echo Free Space : %FreeSpace%
IF %FreeSpace% GTR 15 (
echo "Space is greater than 15 GB"
echo FREE : %FreeSpace%
GOTO TheEnd
)
找到了解决方案:我必须对我使用的所有文件使用绝对路径。
此外,在 for 循环中使用时usebackq
,我应该使用``
:: `type <filename>`
这解决了我的问题。