2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« 同じ木構造で比較先ディレクトリに同名ファイルがあるものを比較元ディレクトリから削除する。 | トップページ | 同じ木構造でコピー先ディレクトリに同名ファイルがないものだけをコピーする。 »

2006年11月 7日 (火)

同じ木構造で比較先ディレクトリに同一ファイルがあるものを比較元ディレクトリから削除する。

昔はツールを使って「find dir1 -t -comp dir2 -rm」で簡単に出来たのですが、
ツールがLFNに対応してないため、これに代わるバッチファイルを作ってみました。

Windows XPに付いているSupport Toolsのbindiff.exeを使用しています。
普通は、C:\Program Files\Support Tools\bindiff.exe にあります。
もし、なければ、"bindiff.exe"で検索して、MSのサイトからダウンロードしてください。

使用法: FindCompRm.CMD 比較元ディレクトリ 比較先ディレクトリ

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%0 IN (%1) DO (
FOR /R %1 %%1 IN (*) DO (
SET x=%%~f1
SET x=!x:%%~f0=%2!
FOR %%2 IN ("!x!") DO IF "%%~t1"=="%%~t2" IF "%%~z1"=="%%~z2" (
BINDIFF  "%%~f1" "%%~f2"
IF !ERRORLEVEL!==1 (
echo DEL "%%~f1"
)
)
)
)

念のため、DELコマンドはechoでコメントにしてあります。
各自のシステム環境で十分テストした上でコメントを外してください。

bindiff.exeがないときは、fc.exeで代替します。

FC /B "%%~f1" "%%~f2" >NUL
IF !ERRORLEVEL!==0 (

« 同じ木構造で比較先ディレクトリに同名ファイルがあるものを比較元ディレクトリから削除する。 | トップページ | 同じ木構造でコピー先ディレクトリに同名ファイルがないものだけをコピーする。 »