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

个人认为,楼主无非是想判断磁盘剩余空间是否超过警戒值,没有必要转换成MB,补零就行了。
假设警戒值为 1GB
  1. @echo off
  2. set "alarmValue=1073741824"
  3. for /f "tokens=3" %%i in ('dir /a /-c C:') do set "freeSpace=%%i"
  4. set "s1=00000000000000000000%freeSpace%"
  5. set "s2=00000000000000000000%alarmValue%"
  6. if "%s1:~-20%" LSS "%s2:~-20%" (
  7.     echo;低于警戒值,发邮件
  8. ) else (
  9.     echo;空间充足,剩余%freeSpace%字节,警戒值%alarmValue%字节
  10. )
  11. pause
复制代码

TOP

本帖最后由 WHY 于 2018-11-3 16:03 编辑

一定要转换为MB,这样应该可以:
  1. @echo off & setlocal enabledelayedexpansion
  2. set "alarmValue=1024"
  3. for /f "tokens=3" %%i in ('dir /a /-c C:') do set "freeSpace=%%i"
  4. call :GetMB
  5. if !rt! LSS !alarmValue! (
  6.     echo;低于警戒值,发邮件
  7. ) else (
  8.     echo;空间充足,剩余!rt!MB,警戒值!alarmValue!MB
  9. )
  10. pause & exit /b
  11. :GetMB
  12. set "str=!freeSpace!FEDCBA9876543210" & set /a Len=0x!str:~16,1!
  13. for /L %%i in (0 1 !Len!) do (
  14.         set "sang=!yu!!freeSpace:~%%i,1!"
  15.         set /a yu=sang%%1048576,sang/=1048576
  16.         if "!yu!" == "0" set "yu="
  17.         set "rt=!rt!!sang!"
  18. )
  19. for /f "tokens=* delims=0" %%i in ("!rt!") do set /a rt=%%i+0
复制代码

TOP

返回列表