[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 flashercs 于 2020-11-23 15:36 编辑

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

TOP

返回列表