在Windows 7中批处理文件以删除超过10天的文件夹

Batch file to delete folders older than 10 days in Windows 7

我想创建一个批处理文件,该文件应使用Windows 7删除10天以上的文件夹的所有子文件夹。

任何帮助,将不胜感激。


从这个答案改编成一个非常类似的问题:

1
FORFILES /S /D -10 /C"cmd /c IF @isdir == TRUE rd /S /Q @path"

您应该在d:\\study文件夹中运行此命令。它将删除所有早于10天的子文件夹。

rd之后的/S /Q使其删除文件夹,即使它们不是空的,也不会提示。

我建议您将上面的命令放入.bat文件,并将其另存为d:\\study\\cleanup.bat


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将不会被清除。


如果要与参数一起使用它(即删除给定目录下的所有子目录),则将这两行放入* .bat或* .cmd文件中:

1
2
@echo off
for /f"delims=" %%d in ('dir %1 /s /b /ad ^| sort /r') do rd"%%d" 2>nul && echo rmdir %%d

并将脚本路径添加到PATH环境变量。在这种情况下,您可以从任何位置调用批处理文件(我想UNC路径也应该起作用)。

例如。:

1
YourBatchFileName c:\\temp

(如果需要,您可以使用引号)

将删除c:\ temp文件夹下的所有空子目录

1
YourBatchFileName

将删除当前目录下的所有空子目录。