2012-04-19 93 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

相关问题