2017-04-05 111 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