批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖
http://bcn.bathome.net/s/tool/index.html?key=计算
这里有好几个命令行工具,可以试试。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。

TOP

回复 16# Batcher


    是的,我也在里面找了几个,其中一个expr.exe可以实现需求
  1. D:\bat_test>expr.exe 50 / 25
  2. 2
复制代码
但是我不会如何将计算结果赋值给变量,能否指导一下?谢谢!

TOP

回复 17# zds612


    放在 for /f 命令里面就行了,类似顶楼代码第15行。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。

TOP

本帖最后由 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

返回列表