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

[数值计算] 求助垃圾清理的批处理有些命令在运行时被"砍掉"了一半

我做了一个垃圾清理的bat,运行时发现出现了一些显示告诉我”找不到操作数“,我把回显打开,发现这是因为代码中很多行都是应该执行total=(!total!+%%~za),但是打开回显我看到的却全都是total=(!total!+),这样的代码完整说出来应该是:for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za),代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "t=%time%"
  4. echo 清理Temp文件夹(Windows临时文件):
  5. echo 用户Temp:
  6. cd/d %temp%
  7. set total=0
  8. for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za)
  9. set to1=total
  10. del /f /s /q %temp%\*.*>nul
  11. echo 完毕
  12. echo 系统Temp:
  13. cd/d %systemroot%\temp
  14. set total=0
  15. for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za)
  16. set to2=total
  17. del /f /s /q %systemroot%\temp\*.*>nul
  18. echo 完毕
  19. echo 清理补丁文件:
  20. cd/d %systemroot%\SoftwareDistribution\Download
  21. set total=0
  22. for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za)
  23. set to3=total
  24. del /f /s /q %systemroot%\SoftwareDistribution\Download\*.*>nul
  25. echo 完毕
  26. echo 清理Windows日志:
  27. cd/d %systemroot%\system32\LogFiles
  28. set total=0
  29. for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za)
  30. set to4=total
  31. del /f /s /q %systemroot%\system32\LogFiles\*.*>nul
  32. echo 完毕
  33. echo 清理预读取文件:
  34. cd/d %systemroot%\prefetch
  35. set total=0
  36. for /f "delims=" %%a in ('dir/b/s/a-d') do set /a total=(!total!+%%~za)
  37. set to5=total
  38. del /f /s /q %systemroot%\prefetch\*.*>nul
  39. echo 完毕
  40. echo 清理完成
  41. set "t1=%time%"
  42. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  43. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=(times/100)%%60","mm=(times/6000)%%60","hh=times/360000","ms=times%%100"
  44. set /a toe=to1+to2+to3+to4+to5
  45. echo 共计删除了:%toe%字节 文件
  46. echo 用时:%hh%时:%mm%分:%ss%秒.%ms%毫秒
  47. pause
  48. exit
复制代码
一个六年级小学生,请多指教

本帖最后由 77七 于 2023-7-20 18:01 编辑
  1. set to1=total
  2. set /a to1=total
  3. set to1=%total%
复制代码

set /a n=n+1
这里自带变量延迟扩展特性,不需要开启变量延迟扩展,使用!n!
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 1# LTSC1809


把 @echo off 删掉
在每一行代码下面加一行:
pause

把第一次出现报错的地方截图发出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表