2つのフォルダ内を比較する - PowerShell
更新日時が直近10件を抜き出す(サブディレクトリを含める)
PS> dir -r dir1 -File | sort LastWriteTime -Descending | select -First 10
PS> dir -r dir2 -File | sort LastWriteTime -Descending | select -First 10
ファイル名で比較する(サブディレクトリを含めない)
PS> $d1 = gci dir1
PS> $d2 = gci dir2
PS> compare $d1 $d2
PS> compare $d1 $d2 -passthru | select fullname
ファイル名他で比較する(サブディレクトリを含める)
ファイル名とファイルサイズで比較する
PS> $map1 = @{}; cd dir1; dir -r -file | % { $p = Resolve-Path -Relative $_.FullName; $map1[$p] = ($p,$_.LastWriteTime,$_.Length) -join "," }; cd ..
PS> $map2 = @{}; cd dir2; dir -r -file | % { $p = Resolve-Path -Relative $_.FullName; $map2[$p] = ($p,$_.LastWriteTime,$_.Length) -join "," }; cd ..
PS> $map1.Keys + $map2.Keys | ? { $map1[$_] -ne $map2[$_] } | % { if (!$map1.containskey($_)) { "2 only: " + $_ } elseif (!$map2.containskey($_)) { "1 only: " + $_ } else { "differ: " + $_ } } | sort | gu
PS> $map1.Keys + $map2.Keys | ? { $map1[$_] -ne $map2[$_] }
ファイル名とファイルサイズと更新日時で比較する
PS> $map1 = @{}; cd dir1; dir -r -file | % { $p = Resolve-Path -Relative $_.FullName; $map1[$p] = ($p,$_.Length) -join "," }; cd ..
PS> $map2 = @{}; cd dir2; dir -r -file | % { $p = Resolve-Path -Relative $_.FullName; $map2[$p] = ($p,$_.Length) -join "," }; cd ..
PS> $map1.Keys + $map2.Keys | ? { $map1[$_] -ne $map2[$_] } | `
% { if (!$map1.containskey($_)) { "2 only: " + $_ } `
elseif (!$map2.containskey($_)) { "1 only: " + $_ } else { "differ: " + $_ } } | sort | gu
PS> $map1.Keys + $map2.Keys | ? { $map1[$_] -ne $map2[$_] }