2017-04-05 114 views
0

我有一个批处理文件,文件格式为“DAILY-yyyymmdd”,并且我只想保留15天的文件。例如DAILY-20170405,DAILY-20170504。基于名称删除文件

我想知道是否有办法使用forfile(或类似的)来删除基于文件的名称(而不是日期/时间戳)的文件?我不能使用日期/时间戳,因为有时候这些日期/时间戳会被破坏,并且可能会延迟几周。

我已经使用了以下内容,但是它使用日期/时间戳: /f“skip = 15 eol =:delims =”%% F in('dir/b/od * .7z') (DEL“%% F”)

回答

1

你的命名方案,允许在日期辞书排序,所以你可以反向排序的名称(不是日期):

for /f "skip=15 eol=: delims=" %%F in ('dir /b /o-n *.7z') do (del "%%F") 
+0

十分感谢。这实际上是看日期还是只订购它们并跳过前15个文件?如果系统错过了3天,它会保留15个最新的文件吗? –

+0

是的,'/ o-n'命令按降序排列,'skip = 15'跳过15个(大多数“最近”)项目。 – weirdan