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[$_] }

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS