【发布时间】:2015-03-03 11:58:01
【问题描述】:
我在批处理文件中有以下内容:
:REMOLDFILES
ECHO Removing files older than 14 days. >>%LOGFILE%
cd /d %BKUPDIR%
FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.zip ^2^>nul') DO IF EXIST "%%~fA" ECHO "%%~fA" >>%LOGFILE%
FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.zip ^2^>nul') DO IF EXIST "%%~fA" DEL "%%~fA" >>%LOGFILE%
FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.log ^2^>nul') DO IF EXIST "%%~fA" ECHO "%%~fA" >>%LOGFILE%
FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.log ^2^>nul') DO IF EXIST "%%~fA" DEL "%%~fA" >>%LOGFILE%
IF [%3]==[Y] GOTO SECONDBACKUPDIR
IF [%3]==[y] GOTO SECONDBACKUPDIR
GOTO END
我遇到的问题是备份已经有几个星期没有运行了,最后删除了我所有的备份,因为它们已经超过 2 周了。
我需要它保留最近 10 个最新备份。
有人知道我会怎么做吗?由于我对批处理文件不太熟悉,所以我没有写过一次。
【问题讨论】:
-
此代码应删除除最近的 14
*.log和*.zip文件之外的所有文件。将其减少到 10 无济于事。如何确定备份是否已运行? -
@Magoo - 我也注意到了(我的原始答案因此有 14 天),但 OP 专门要求 10 天。我想他有他的理由(也许周末不运行?)。
-
您使用的是什么操作系统?您也许可以使用
forfiles命令,它可以轻松解决您的问题。
标签: windows batch-file command-line cmd