2016-02-29 79 views
0

我想創建一個批處理文件,可以執行以下操作:批處理文件 - 刪除文件只有在另外的文件存在

如果「文件1ABC(X)的.bin」存在,那麼刪除「文件1ABC(Y) .bin「,如果沒有,則保留」File 1abc(Y).bin「並繼續。

基本上通常有多種版本的文件,其中一種(通過文件名中的單個變量標記,始終保持不變)優於另一種。如果那個高級版本不存在,我希望這個低版本保持不變。

這可能嗎?

+0

請提供您到目前爲止嘗試過的任何代碼,並且還要向您的問題中添加一些示例數據以進行澄清... – aschipfl

回答

0

您可以使用IF語句(http://www.computerhope.com/if.htm):

IF EXIST File1.ext DEL File2.ext 

UPDATE - 要解決這個問題提到的具體問題:

set FileNames="File 1abc (*).bin" 
set LastVersion="" 
:: Find last version 
for %%f in (%FileNames%) do (
    if "%%f" GTR %LastVersion% SET LastVersion="%%f" 
) 
:: Delete old versions 
for %%f in (%FileNames%) do (
    if "%%f" LSS %LastVersion% DEL "%%f" 
) 

這裏有一個陷阱:如果版本(X或你的例子中的Y)是一個數字,因爲(9)被認爲大於(10),所以它應該用固定的數字位數來指定(例如(009),(010),...)。

+0

這不需要我爲每個文件命名嗎?如果用手工做它會不會快得多? –

+1

這適用於標題中的問題,但不是實際問題中描述的問題。你將需要一個for/f'循環。 – SomethingDark

+0

這樣的事情是如何完成的?這個概念對我來說是新的。 –

相關問題