批处理文件比较数字

时间:2012-02-01 11:46:40

标签: command-line batch-file

我必须编写一个脚本来检查驱动器中是否有足够的空间。 我写了以下内容:

@echo off
set gbsize = 1,073,741,824
Set gbsize=%gbsize:,=%
for /f "tokens=3" %%a in ('dir c:\') do (
    set /a bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
endlocal && set bytesfree=%bytesfree%

If %gbsize% gtr %bytesfree% echo hi

但是当脚本抛出错误时: 无效的号码。数字常量是十进制(17), 十六进制(0x11)或八进制(021)。

我错过了什么?有人可以帮忙吗? 谢谢!

1 个答案:

答案 0 :(得分:4)

当您的值中有逗号时,您的当前问题是尝试使用SET / A.

定义gbsize时,还需要删除=之前和之后的空格。

我不明白你为什么没有setlocal

有endlocal

我相信这就是你要找的东西。如果可用空间少于1GB,它将回显“hi”。

@echo off
setlocal
set gbsize=1,073,741,824
Set gbsize=%gbsize:,=%
for /f "tokens=3" %%a in ('dir c:\') do set bytesfree=%%a
set bytesfree=%bytesfree:,=%
If %gbsize% gtr %bytesfree% echo hi

获得可用空间的另一种更直接的(可能更准确的?)方式

for /f "tokens=2" %%S in ('wmic volume get DriveLetter^, FreeSpace^|find "C:"') do set bytesfree=%%S