2014年2月28日

【PowerShell】2つのファイルを比較する



よく、2つのファイルを比較したい、特にソースコードで変更箇所を探し出したいといったことがあると思いますが、そのようなときはCompare-Objectを使います。


Compare-Object -ReferenceObject $(Get-Content C:\work\src1\Program.cs) -DifferenceObject $(Get-Content C:\work\src2\Program.cs)

この例では、2つのファイルC:\work\src1\Program.csとC:\work\src2\Program.csの比較を行っています。


-ReferenceObject は、比較の対象となるオブジェクトを示しています。

-DifferenceObject は、Reference オブジェクトと比較するオブジェクトを指定します。

$()はそれぞれGet-Contentで取得したオブジェクトが格納された変数?になるのだと思います。
すみません勉強不足でちょっと表現があいまいなのですが、おそらく変数だと思います。


それで結果は次のようになります。
この場合、両方のファイルには含まれていないが、どちらか一方のファイルに含まれている行のみを表示します。
つまり変更点だけ表示されます。



ただ、このやり方だと変更になった部分しか分からないので、変更になっていない部分も表示させたい場合には、-IncludeEqualをつけます。
-IncludeEqualは、比較されるオブジェクトの特性で等しいものを表示します。

Compare-Object -ReferenceObject $(Get-Content C:\work\src1\Program.cs) -DifferenceObject $(Get-Content C:\work\src2\Program.cs) -IncludeEqual

結果は、こんな感じになります。


<関連記事>
【PowerShell】ファイルから文字列を検索する
【PowerShell】サブフォルダのファイルも含めて文字列を検索する
【PowerShell】ファイル検索
【PowerShell】ファイルを読み込む
【PowerShell】ファイル作成


スポンサーリンク