Board logo

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

作者: LTSC1809    时间: 2023-7-20 16:31     标题: 求助垃圾清理的批处理有些命令在运行时被"砍掉"了一半

我做了一个垃圾清理的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
复制代码

作者: Batcher    时间: 2023-7-20 16:46

回复 1# LTSC1809


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

把第一次出现报错的地方截图发出来看看
作者: 77七    时间: 2023-7-20 17:59

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2