Windows 批次中LSS/LEQ比较的问题
我想检查C:驱动器是否至少还有一定的存储空间(在本例中为60GB),如果没有,则停止执行。但我一直坚持CMD告诉我160000不到60000,我不明白为什么 代码如下:Windows 批次中LSS/LEQ比较的问题,windows,batch-file,cmd,wmic,Windows,Batch File,Cmd,Wmic,我想检查C:驱动器是否至少还有一定的存储空间(在本例中为60GB),如果没有,则停止执行。但我一直坚持CMD告诉我160000不到60000,我不明白为什么 代码如下: @echo off & setlocal enableextensions enabledelayedexpansion :: If disk space is less than this value, script will not be executed SET DISK_SPACE_ERROR_AMOUNT_M
@echo off & setlocal enableextensions enabledelayedexpansion
:: If disk space is less than this value, script will not be executed
SET DISK_SPACE_ERROR_AMOUNT_MB=60000
FOR /f "tokens=3" %%i IN ('dir /-c^|findstr /c:"bytes free"') DO SET "Free=%%i"
:: Free contains the bytes of storage left
SET /A DiskFreeKB=%Free:~,-3%
SET /A DiskFreeMB=%DiskFreeKB%/1024
echo Disk Space Check:
echo %DiskFreeKB% KB
echo %DiskFreeMB% MB
echo Err amount %DISK_SPACE_ERROR_AMOUNT_MB%
IF "%DiskFreeMB%" LSS %DISK_SPACE_ERROR_AMOUNT_MB% (
:: DiskFreeMB less than error amount
echo.
echo ERROR
echo Not enough space left - %DiskFreeMB% MB of the required minimum of %DISK_SPACE_ERROR_AMOUNT_MB% MB
echo ERROR
echo.
PAUSE
EXIT 1
) ELSE (
echo Disk space is ok
:: (Continue with other code)
)
这是控制台的输出:我建议改为使用差异
从所需的最小数量中减去可用空间,如果是
,我建议使用差值
从所需的最小数量中减去可用空间,如果是,我建议您使用:
@“%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
@在这里输入你的代码
@回显足够的空间并暂停
如果你愿意,你可以美化它
@“%\uuuuuAppDir\uuuuuwbem\WMIC.exe”卷,其中^
“DriveLetter='%SystemDrive%'和FreeSpace>='6000000000'”^
获取FreeSpace 2>num |“%uuu AppDir_uuuu%findstr.exe”“[0-9]”1>num |退出1
@在这里输入你的代码
@回显足够的空间并暂停
在这两个示例中,最后两行用于提供信息。我建议您在执行此任务时使用:
@“%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
@在这里输入你的代码
@回显足够的空间并暂停
如果你愿意,你可以美化它
@“%\uuuuuAppDir\uuuuuwbem\WMIC.exe”卷,其中^
“DriveLetter='%SystemDrive%'和FreeSpace>='6000000000'”^
获取FreeSpace 2>num |“%uuu AppDir_uuuu%findstr.exe”“[0-9]”1>num |退出1
@在这里输入你的代码
@回显足够的空间并暂停
在这两个示例中,最后两行用于提供信息。删除%DiskFreeMB%
..@JosefZ周围的引号谢谢,我已经删除了them@aschipfl不幸的是,这并没有改变任何事情好吧,如果“%DiskFreeMB%”lss%DISK\u SPACE\u ERROR\u AMOUNT\u MB%
永远都不可能为真,因为引号也是比较表达式的一部分,它们被视为字符串…删除%DiskFreeMB%
周围的引号…@JosefZ谢谢,我已经删除了them@aschipfl不幸的是,这并没有改变任何事情好吧,如果“%DiskFreeMB%”lss%DISK\u SPACE\u ERROR\u AMOUNT\u MB%
永远不可能为真,因为引号也是比较表达式的一部分,它们当时被视为字符串…我现在得到的错误命令的语法不正确。
。我修改过的IF如下所示:SET/A ErrorDelta=%DiskFreeMB%-%DISK\u SPACE\u ERROR\u AMOUNT\u MB%IF%ErrorDelta%LEQ 0(echo Out Out SPACE)
我现在收到错误命令语法不正确。
。我修改的IF如下所示:SET/A ErrorDelta=%DiskFreeMB%-%DISK\u SPACE\u ERROR\u AMOUNT\u MB%IF%ErrorDelta%LEQ 0(回显空间不足)
SET /A delta=%DiskFreeMB% - %DISK_SPACE_ERROR_AMOUNT_MB%
if %delta% LEQ 0 ( echo Out of Space )
@echo off
echo Test1: Sufficient Disk Space
set DiskFreeMB=600
set DISK_SPACE_ERROR_AMOUNT_MB=500
SET /A ErrorDelta=%DiskFreeMB% - %DISK_SPACE_ERROR_AMOUNT_MB%
if %ErrorDelta% LEQ 0 ( echo Out of Space )
echo.
echo Test2: Not enough space.
set DiskFreeMB=400
set DISK_SPACE_ERROR_AMOUNT_MB=500
SET /A ErrorDelta=%DiskFreeMB% - %DISK_SPACE_ERROR_AMOUNT_MB%
if %ErrorDelta% LEQ 0 ( echo Out of Space )
echo.
echo Test2: Exactly Full
set DiskFreeMB=500
set DISK_SPACE_ERROR_AMOUNT_MB=500
SET /A ErrorDelta=%DiskFreeMB% - %DISK_SPACE_ERROR_AMOUNT_MB%
if %ErrorDelta% LEQ 0 ( echo Out of Space )
echo.
Test1: Sufficient Disk Space
Test2: Not enough space.
Out of Space
Test2: Exactly Full
Out of Space