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

时间:2013-07-31 22:48:54

标签: batch-file windows-server

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

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

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

如何使用.bat?

执行此操作

提前致谢

2 个答案:

答案 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 dirdir /?以获取有关所有选项含义的文档。 FOR命令处理结果。 SKIP选项会跳过前6个文件,这些文件恰好是您要保留的文件,因为它们排在最前面。其余文件名将传递给DEL命令。输入help forfor /?以获取有关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"