批处理文件,根据日期将N个文件保存在目录中

Dar*_*son 2 batch-file windows-server

我正在寻找一种方法将最新的N个文件保存在一个目录中,删除旧文件.

我通过FTP在一个文件夹(Windows Server)中获得了每日备份,我想保留最后3个备份.这些备份有2个文件(第一个.tar.gz,第二个是MySQL转储.sql).

关键是那些备份可能不会在某些日子出现,所以我不想删除超过3天的文件.但删除尽可能多的文件,只保留最新的6个文件(3天的bacups,2个文件一次).

如何用.bat做到这一点?

提前致谢

dbe*_*ham 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"
Run Code Online (Sandbox Code Playgroud)

说明:

DIR命令按降序列出按上次修改时间戳排序的文件.键入help dirdir /?从命令提示符处获取有关所有选项的含义的文档.FOR命令处理结果.SKIP选项会跳过前6个文件,这些文件恰好是您要保留的文件,因为它们排在最前面.其余文件名将传递给DEL命令.键入FOR help forfor /?有关FOR的文档 - 它有点像野兽,有很多选项.