批处理文件以删除X天旧文件排除少数文件

时间:2018-07-22 10:26:31

标签: batch-file

我想从目录中删除X天的旧文件,但要排除特定文件(*例外)。我正在使用以下命令,但似乎对我不起作用。

for /f "delims=" %%a in ('forfiles /p "%userprofile%\.." /d -180 /c "cmd /c if @isdir==TRUE echo @file"^|findstr /vig:"%userprofile%\exception.txt"') do echo rd /s /q "%%~a"

1 个答案:

答案 0 :(得分:0)

您可以使用ForFiles来代替RoboCopy

@For /F "Tokens=*" %%A In ('RoboCopy "%UserProfile%\.." Null /L /MinAge:180 /NC /NDL /NJH /NJS /NP /NS /XF exception*') Do @Del "%%A"

在命令提示符下输入RoboCopy /?以获取其用法信息。


重新阅读问题和代码后,不清楚是要排除名为exception*的文件(这是我上面的回答所做的事情)还是要排除列出的文件在名为exception.txt的文件中。如果是后者,则需要先构建排除字符串,以附加到/XF列表中。

如果您的文件仅包含一些相对较短的排除掩码,那么您可以这样做:

@Echo Off
Set "EX="
For /F "UseBackQ Delims=" %%A In ("%UserProfile%\exception.txt") Do (
    If Not Defined EX (Set "EX=%%A ") Else Call Set "EX=%%EX%%%%A ")
For /F "Tokens=*" %%A In ('RoboCopy "%UserProfile%\.." Null /L /MinAge:180 /NC /NDL /NJH /NJS /NP /NS /XF %EX%') Do Del "%%A"