标题: [文本处理] 【已解决】批处理,用于删除某目录下的最新的三个目录外的其它目录 [打印本页]
作者: tdmax3 时间: 2017-8-24 17:13 标题: 【已解决】批处理,用于删除某目录下的最新的三个目录外的其它目录
不明白为什么会报这个错,请大家帮忙看看- @echo off &setlocal enabledelayedexpansion
- path = "C:\Users\Desktop\0824"
- cd %path%
- set /a n = 0
- for /d %%i in ("%path%\*") do (
- set /a n=!n!+1
- )
- set max=3
- set count=0
- if !n! GTR 3 (
- for /d %%a in ('dir %path%\* /ad /o-d') do (
- set /a count = !count!+1
- if !count! GTR %max% ( del /q %%a )
- ) ) else (
- exit )
- pause
复制代码
作者: Batcher 时间: 2017-8-24 20:17
所有的赋值语句,把等号左右两边的空格删掉。
作者: tdmax3 时间: 2017-8-24 20:36
回复 2# Batcher
嗯,是应该把等号两边的空格删掉,之前也吃过亏了,还是没改掉习惯性打空格。。。
不过这个报错还是没有解决,报错显示是这个for语句里面有问题for /d %%a in ('dir %path%\* /ad /o-d') ,我在cmd单独执行dir %path%\* /ad /o-d这一句是可以的,所以就搞不明白了,还请赐教
作者: Batcher 时间: 2017-8-24 20:58
- @echo off
- setlocal enabledelayedexpansion
- set "mypath=C:\Users\Desktop\0824"
- cd "%mypath%"
- if errorlevel 1 (
- echo 文件夹不存在 %mypath%
- goto :End
- )
-
- set n=0
- for /d %%i in ("%mypath%\*") do (
- set /a n=!n!+1
- )
- set max=3
- set count=0
- if !n! GTR 3 (
- for /f "delims=" %%a in ('dir /b /ad /o-d "%mypath%"') do (
- set /a count=!count!+1
- if !count! GTR %max% (
- REM 如果显示结果没问题,把下面的 echo 去掉再执行
- echo rd /s /q "%%a"
- )
- )
- )
-
- :End
- pause
复制代码
作者: Batcher 时间: 2017-8-24 21:00
回复 3# tdmax3
for /d + Command Set 没有这样的语法,建议阅读 for 命令教程:
http://bbs.bathome.net/thread-31727-1-1.html
另外,删除文件夹的命令是 rd,删除文件的命令是 del
作者: tdmax3 时间: 2017-8-25 10:42
回复 5# Batcher
非常感谢你的帮助,我明白了,是不是在使用for /d 的时候in 里面是不能接命令的, 因为一直在想着是要对文件夹进行操作,所以执着于for /d ,并自行进行了扩展;
还有删除文件和删除文件夹命令不同,感谢帮忙指出问题,我的基础太差了,会继续学习的,再次表示感谢~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |