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

[文本处理] 【已解决】批处理,用于删除某目录下的最新的三个目录外的其它目录

不明白为什么会报这个错,请大家帮忙看看
  1. @echo off &setlocal enabledelayedexpansion
  2. path = "C:\Users\Desktop\0824"
  3. cd %path%
  4. set /a n = 0
  5. for /d %%i in ("%path%\*") do (
  6.   set /a n=!n!+1
  7. )
  8. set max=3
  9. set count=0
  10. if !n! GTR 3 (
  11. for /d %%a in ('dir  %path%\* /ad /o-d') do (
  12.     set /a count = !count!+1
  13. if !count! GTR %max% ( del /q %%a )  
  14.       )  ) else (   
  15. exit  )
  16. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

所有的赋值语句,把等号左右两边的空格删掉。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
嗯,是应该把等号两边的空格删掉,之前也吃过亏了,还是没改掉习惯性打空格。。。
不过这个报错还是没有解决,报错显示是这个for语句里面有问题for /d %%a in ('dir  %path%\* /ad /o-d') ,我在cmd单独执行dir  %path%\* /ad /o-d这一句是可以的,所以就搞不明白了,还请赐教

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "mypath=C:\Users\Desktop\0824"
  4. cd "%mypath%"
  5. if errorlevel 1 (
  6.     echo 文件夹不存在 %mypath%
  7.     goto :End
  8. )
  9. set n=0
  10. for /d %%i in ("%mypath%\*") do (
  11.     set /a n=!n!+1
  12. )
  13. set max=3
  14. set count=0
  15. if !n! GTR 3 (
  16.     for /f "delims=" %%a in ('dir /b /ad /o-d "%mypath%"') do (
  17.         set /a count=!count!+1
  18.         if !count! GTR %max% (
  19.             REM 如果显示结果没问题,把下面的 echo 去掉再执行
  20.             echo rd /s /q "%%a"
  21.         )
  22.     )
  23. )
  24. :End
  25. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# tdmax3


for /d + Command Set 没有这样的语法,建议阅读 for 命令教程:
http://bbs.bathome.net/thread-31727-1-1.html

另外,删除文件夹的命令是 rd,删除文件的命令是 del
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher

非常感谢你的帮助,我明白了,是不是在使用for /d 的时候in 里面是不能接命令的, 因为一直在想着是要对文件夹进行操作,所以执着于for /d ,并自行进行了扩展;

还有删除文件和删除文件夹命令不同,感谢帮忙指出问题,我的基础太差了,会继续学习的,再次表示感谢~

TOP

返回列表