2012-04-19 39 views
2

我想檢查一個文件夾中的所有文件,看它們是否存在於另一個文件夾中。在第二個文件夾中不存在的第一個文件夾中找到文件時,我希望該文件被刪除。DOS BATCH:如何比較2個文件的存在與2個單獨的文件夾中的相同名稱?

這可能嗎?

+1

你想按名稱比較文件,按名稱+大小+時間戳或通過md5sum /二進制比較也許? – 2012-04-19 14:47:50

+0

答案需要被提問者接受。 – Smandoli 2012-07-03 15:42:44

回答

2

根據需要編輯路徑信息(或合併批量參數%1%2),並在確認獲得正確結果後,刪除DEL之前的ECHO。

@echo off 
setlocal 
set "dir1=." 
set "dir2=d1" 
set tempFile="%temp%\exclude%random%.txt" 
dir /b "%dir2%" >%tempFile% 
for /f "eol=: delims=" %%F in ('dir /b /a-d "%dir1%" ^| findstr /vixg:%tempFile%') do echo del "%dir1%\%%F" 
del %tempFile% 

- 該解決方案是簡單地比較名稱。如果兩個完全不同的文件具有相同的名稱,則它們將被視爲相同。

+0

哇!謝謝,我會試試看。 – 2012-04-19 17:10:53

+0

我試過這個:setlocal set dir1 =「%USERPROFILE%\ Documents」 set「dir2 =」S:\ My Backup \ My Documents 01 \ my documents「 set tempFile =」%temp%\ exclude%random% .txt「 dir/b」%dir2%「>%tempFile% for/f」eol =:delims =「%% F in('dir/b/ad」%dir1%「^ | findstr/vixg:% tempFile%')do del「%dir2%\ %% F」 del%tempFile% – 2012-04-19 19:17:03

+0

@SteveOver - 代碼試圖從錯誤的目錄(%dir2%)中刪除。現在全部修復,正確地從%dir1%中刪除。 – dbenham 2012-04-19 19:51:10

相關問題