最近はバッチファイルよりもPowerShellを使う機会が増えていますが、Powershellってバージョンによって使えるコマンドが変わったり、挙動が変わったりするので意外と大変な部分があります。
コマンドプロンプトよりも多機能で色々と使い勝手がいい分、注意が必要ですね。先日もOSのバージョンアップに伴いPowershellの文字コードの扱いが変わっていて文字化けするようになったという事例もあって、OSやPowershellのバージョンが替わる場合は注意が必要です。
さて、今回はPowerShellでテキスト、csvファイルの中身の比較を行うコマンドです。さっと二つのファイルをチェックしたい場合に、フリーソフトなどが使えない環境で知っておくと便利です。
ちなみに、コマンドプロンプトでテキストを比較する場合は、「fc」コマンドを使用します。サーバなどでdfやWinMergeなどのフリーソフトが使えない場合に知っておくと便利です。
Powershellでテキストファイルの内容を比較するには「get-content」を使用する必要があります。
例えば、test1.txtとtest2.txtという二つのファイルがある場合は、以下のようなコマンドになります。
> compare-object (get-content test1.txt) (get-content test2.txt)
また、事前にファイルを取り込むという方法もあるようです。
PS> $A = Get-Content %新しいCSVファイル%
PS> $B = Get-Content %古いCSVファイル%
PS> Compare-Object $A $B
以下のコマンドで比較した結果をテキストにリダイレクトなどもできます。
PS> Compare-Object $A $B > diff.txt
サーバー上でファイル比較したい場合に覚えておくと便利ですね。ちなみに参考にしたのは以下のサイトになります。
「参考」
https://qiita.com/kmr_hryk/items/9b0d28ed0fda5b34f07c