2017-03-22 75 views
0

我有多個文件夾,其中多個文件具有相同的名稱,然後是時間戳。例如:批處理文件刪除除了最後10個文件名之外的所有文件

foo_2017.01.16.png 
foo_2017.01.15.png 
foo_2017.01.14.png 
bar_2017.01.16.png 
bar_2017.01.15.png 
bar_2017.01.14.png 
file_2017.01.16.png 
file_2017.01.15.png 
file_2017.01.14.png 

什麼,我需要做的就是創建一個批處理文件,將在_timestamp前解析出只有名,並保留每個文件名的最後10。我不是很熟悉批處理,真的可以在這裏使用一些幫助。每個文件的修改日期都是相同的,所以我不能說只保留最近10天,否則我可以處理。

編輯:

我有一個特定的文件夾年長28天,看起來像下面的刪除文件的批處理文件,我只是不知道如何修改它爲每個遍歷特別是文件名,並沒有被修改日期去:

/c echo @FILE 
forfiles -p "C:\workspace\SeleniumTestResults" -s -m *.* /D -28 /C "cmd /c del @path" 

再次,這批絕對不是我的領域

+2

幫助意味着你自己做了一些事情,所以通過相應地編輯你的問題來發布你的批處理文件,並要求你的代碼中有問題的部分的具體幫助。 – Compo

+0

我附加了一個批處理文件的副本,我使用它來刪除基於修改日期的所有文件,我只是不知道如何處理我的問題的詳細信息 –

+0

請勿擴展或更改問題的範圍,因爲已發佈的答案那麼可能會出現不完整或錯誤!改爲發表另一個問題!另外,不要將解決方案包含在問題中;反而提供你自己的答案!謝謝! – aschipfl

回答

2
@echo off 
setlocal 
REM create some files for testing: 
break>foo_2017.01.16.png 
break>foo_2017.01.15.png 
break>foo_2017.01.14.png 
break>bar_2017.01.16.png 
break>bar_2017.01.15.png 
break>bar_2017.01.14.png 
break>file_2017.01.16.png 
break>file_2017.01.15.png 
break>file_2017.01.14.png 
dir *.png 

set keep=2 

for /f "delims=_" %%a in ('dir /b *.png') do (
    for /f "skip=%keep% delims=" %%b in ('dir /b /o-n "%%~a*.png"') do del "%%b" 
) 
dir *.png 
+0

是否有可能在與「截圖」匹配的每個子目錄中運行答案中的「for」循環?這很好,我想我可以弄清楚如何掃描所有的子文件夾並執行你在所有「截圖」目錄中提供的'for'循環,但是我沒有任何運氣能夠解決這個問題。我用一個示例文件夾結構編輯了我的問題。任何進一步的幫助將非常感激。 ---我已經加入了我的問題。另外,我應該爲此創建一個新問題嗎? –

+0

我想通了。我將把解決方案放在問題 –

+0

否@DustinN,不要把解決方案放在你的問題上!相反,發佈你自己的答案! – aschipfl

相關問題