Batch file 批处理文件以基于日期在目录中保留N个文件

Batch file 批处理文件以基于日期在目录中保留N个文件,batch-file,windows-server,Batch File,Windows Server,我正在寻找一种方法,将最新的N个文件保存在一个目录中,删除旧文件 我在一个文件夹(Windows Server)中通过FTP进行了每日备份,我只想保留最后3次备份。这些备份包含两个文件(第一个是.tar.gz,第二个是MySQL dump.sql) 关键是,这些备份可能在某些天不会出现,所以我不想删除超过3天的文件。但删除尽可能多的文件,只保留最新的6个文件(3天的bacups,一次2个文件) 如何用蝙蝠来做这个 提前感谢试试这个: for /f "tokens=1*delims=:" %%a

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

我在一个文件夹(Windows Server)中通过FTP进行了每日备份,我只想保留最后3次备份。这些备份包含两个文件(第一个是.tar.gz,第二个是MySQL dump.sql)

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

如何用蝙蝠来做这个

提前感谢

试试这个:

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" 

比恩多的回答更直截了当。这假设.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命令处理结果。“跳过”选项跳过前6个文件,这6个文件恰好是您要保留的文件,因为它们按顶部排序。其余文件名将传递给DEL命令。键入
help以获取
for/?
以获取for上的文档-这有点像野兽,有很多选项。

按预期工作。但是,我无法理解该代码的任何内容:(但是可以这样做:P非常感谢mate@DarioEmerson-添加了解释。如果你对答案感到满意,你应该点击左上角附近的复选标记接受答案。该操作让其他人知道问题已经得到了回答,它会给你2个代表分,给回答海报15个代表分。只有一个答案可以b。)e每个问题接受。一旦你达到15个代表点,你就有权对任何你认为有用的答案进行投票,甚至对其他人的问题进行投票。投票结果为回答者提供10分。