* 2つのフォルダ内を比較する [#b62c0767]
** チェックサムで比較する [#i7d05c8e]
*** Windows標準コマンド [#x3ffaab8]
cmop dir1 dir2
fc /b dir1 dir2
*** WinMerge [#b59d72f3]
WinMergeを使う。
これらの方法は正確だが、時間が掛かる。
** ファイル名とタイムスタンプとファイルサイズで比較する [#q42acfab]
*** robocopy [#c53f074d]
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を確認する。ファイル一覧で、先頭に”新しい”や”新しいファイル”という記述があれば、そのファイルは差分を持っている。”新しい”はタイムスタンプが新しく、”新しいファイル”は片方のフォルダにしか存在しないという意味。
- 上のコマンドを実行して、1.logと2.logを確認する。
- ログファイル内のファイル一覧で、先頭に"新しい"や"新しいファイル"という記述があれば、そのファイルは差分を持っている。"新しい"はタイムスタンプが新しく、"新しいファイル"は片方のフォルダにしか存在しないという意味。
- 差分があったファイル(フォルダ)の数は、ログファイル内の最後で、"コピー済み"に"ファイル 3"、"フォルダ 2"のように記述される。
*** PowerShellでファイルリストを作ってWinMergeで差分比較 [#o6a42723]
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