技術情報 / Windows / TIPS / 2つのフォルダ内を比較する

2つのフォルダ内を比較する

チェックサムで比較する

Windows標準コマンド

cmop dir1 dir2
fc /b dir1 dir2

WinMerge

WinMergeを使う。

これらの方法は正確だが、時間が掛かる。

ファイル名とタイムスタンプとファイルサイズで比較する

robocopy

robocopy dir1 dir2 /s /e /log:"c:\tmp\1.log" /l
robocopy dir2 dir1 /s /e /log:"c:\tmp\2.log" /l
  • 上のコマンドを実行して、1.logと2.logを確認する。
  • ログファイル内のファイル一覧で、先頭に”新しい”や”新しいファイル”という記述があれば、そのファイルは差分を持っている。”新しい”はタイムスタンプが新しく、”新しいファイル”は片方のフォルダにしか存在しないという意味。
  • 差分があったファイル(フォルダ)の数は、ログファイル内の最後で、”コピー済み”に”ファイル 3″、”フォルダ 2″のように記述される。

PowerShellでファイルリストを作ってWinMergeで差分比較

PS tmp> dir -r dir1 | % { $p = Resolve-Path -Relative $_.FullName; ($p, $_.LastWriteTime, $_.Length) -join "," } > 1.csv
PS tmp> dir -r dir2 | % { $p = Resolve-Path -Relative $_.FullName; ($p, $_.LastWriteTime, $_.Length) -join "," } > 2.csv
PS tmp> winmerge.exe .\1.csv .\2.csv