我想创建一个批处理文件,该文件应使用Windows 7删除超过10天的文件夹的所有子文件夹
任何帮助都将不胜感激。
答案 0 :(得分:45)
改编自this answer to a very similar question:
FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
您应该从d:\study
文件夹中运行此命令。它将删除所有超过10天的子文件夹。
/S /Q
之后的rd
会删除文件夹,即使它们不是空的,也不会提示。
我建议您将上述命令放入.bat文件中,并将其另存为d:\study\cleanup.bat
。
答案 1 :(得分:9)
FORFILES / S / D -10 / C“cmd / c IF @isdir == TRUE rd / S / Q @path”
我无法得到Blorgbeard的工作建议,但我能够使用RMDIR代替RD:
FORFILES / p N:\ test / S / D -10 / C“cmd / c IF @isdir == TRUE RMDIR / S / Q @path”
由于RMDIR不会删除非空的文件夹,因此我最终也使用此代码删除超过10天的文件,然后删除超过10天的文件夹。
FOR / d %% K in(“n:\ test *”)DO(
FOR / d %% J in(“%% K *”)DO(
FORFILES / P %% J / S / M 。 / D -10 / C“cmd / c del @file”
)
)
FORFILES / p N:\ test / S / D -10 / C“cmd / c IF @isdir == TRUE RMDIR / S / Q @path”
我使用此代码清除测试中文件夹中的子文件夹(例如n:\ test \ abc \ 123在清空时会被清除,但n:\ test \ abc不会被清除
答案 2 :(得分:0)
如果你想将它与参数一起使用(即删除给定目录下的所有子目录),则将这两行放入* .bat或* .cmd文件中:
@echo off
for /f "delims=" %%d in ('dir %1 /s /b /ad ^| sort /r') do rd "%%d" 2>nul && echo rmdir %%d
并将脚本路径添加到PATH环境变量中。在这种情况下,您可以从任何位置调用批处理文件(我认为UNC路径也可以工作)。
例如:
YourBatchFileName c:\temp
(如果需要,您可以使用引号)
将删除c:\ temp文件夹
下的所有空子目录YourBatchFileName
将删除当前目录下的所有空子目录。