我正在寻找一种方法来将最新的N个文件保存在目录中,删除旧文件。
我在一个文件夹(Windows Server)中通过FTP获得了每日备份,我想保留最后3个备份。这些备份有2个文件(第一个.tar.gz,第二个是MySQL转储.sql)。
关键是那些备份可能不会在某些天出现,所以我不想删除超过3天的文件。但删除尽可能多的文件,只保留最新的6个文件(3天的bacups,2个文件一次)。
如何使用.bat?
执行此操作提前致谢
答案 0 :(得分:6)
比Endoro的答案更直接。这假定.sql和.tar.gz文件总是成对出现。
for /f "skip=6 eol=: delims=" %%F in ('dir /b /a-d /o-d *.tar.gz *.sql') do del "%%F"
说明:
DIR命令按降序列出按上次修改时间戳排序的文件。从命令提示符处键入help dir
或dir /?
以获取有关所有选项含义的文档。 FOR命令处理结果。 SKIP选项会跳过前6个文件,这些文件恰好是您要保留的文件,因为它们排在最前面。其余文件名将传递给DEL命令。输入help for
或for /?
以获取有关FOR的文档 - 它有点像野兽,有很多选项。
答案 1 :(得分:1)
试试这个:
for /f "tokens=1*delims=:" %%a in ('dir /b /a-d /o-d *.tar.gz *dump.sql 2^>nul^|findstr /n "^"') do if %%a gtr 6 echo del "%%~b"