本帖最后由 flashercs 于 2020-11-23 15:36 编辑
批处理仅支持int32整数,但你可以用字符串来替代数值类型进行比较,uint64最大值才20位整数,你可以设定32位字符串代表整数,远远超过uint64最大值。例子:- @echo off
- REM 32位10进制整数
- set prefix=00000000000000000000000000000000
- for /f "tokens=*" %%i in ('wmic logicaldisk where "Caption='D:'" get freespace /value^|find "="') do set %%i
- set freespace=%prefix%%freespace%
- set freespace=%freespace:~-32%
- echo %freespace%
- REM 比较对象64GB
- set targetSpace=64000000000
- set targetSpace=%prefix%%targetSpace%
- set targetSpace=%targetSpace:~-32%
- REM 比较大小
- if "%freespace%" gtr "%targetSpace%" (
- echo 大于64GB
- ) else (
- echo 小于等于64GB
- )
- pause
- exit /b
复制代码 你截取错误原因是这行代码有bug- for /f "tokens=2 delims==" %%i in ('wmic logicaldisk where "Caption='D:'" get freespace /value') do set space=%%i
复制代码 wmic返回的字符串后面有个\r字符,是看不见的,但是它确实在space变量的末尾,所以你用我给你的代码获取就可以正确截取理想长度了 |