2011-03-31 154 views
22

早于10天我要创建哪些应该删除其年龄超过10天,使用Windows 7批处理文件,删除文件夹在Windows 7

任何帮助,将不胜感激文件夹的所有子文件夹的批处理文件。

+0

请清楚:是否要删除所有超过10天的文件夹或单个文件夹*如果它早于10天..? – Blorgbeard 2011-03-31 08:43:22

+0

删除所有超过10天的文件夹例如:在D:/ Test下应该删除10天以下的文件夹,而不是新创建的文件夹。 – nilesh 2011-03-31 08:59:16

+0

[删除30天以前的子目录]可能的副本(http://stackoverflow.com/questions/3419091/delete-sub-directories-old-than-30-days) – Blorgbeard 2011-03-31 09:07:08

回答

39

this answer to a very similar question改编:

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

+0

我使用了这个命令,并且这些文件夹已被删除。 但我得到一个错误:错误:系统找不到指定的文件。 我需要退出error_level = 0 – 2015-08-04 12:26:18

+3

我不认为你会需要FORFILES/S选项,因为子目录删除将通过RD/S选项。 – dmachop 2015-10-09 15:10:10

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 

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

7

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中的子文件夹(例如:\测试\ ABC \ 123会得到吹扫空当,但N:\测试\ ABC不至于太吹扫

相关问题