diffとは?Windows標準コマンドでテキストファイルの差分を取る方法

diffとは?Windows標準コマンドでテキストファイルの差分を取る方法のアイキャッチイメージ

diffとは


diffとは2つのテキストファイル同士を比較して異なる箇所を表示するLinuxのプログラムです。csvなどのテキストデータや、ソフトウェア開発にあたってのソースファイルなどの更新点のチェックに使用します。

Windowsにもdiffの代わりに使える差分出力ソフトがあります。無料で使えるソフトウェアも多数ありますが、業務などで指定以外のソフトウェアを使用出来ない場合や、手っ取り早く比較したい場合にdiffの代わりに使うコマンドと使用法を解説します。

Windowsにはdiffコマンドはありませんが、プログラミングの話題でファイルの差分を取る時に慣用的に「diff(ディフ)を取る」などと言う事がありますので、知識として覚えておきましょう。

Windows標準コマンドでテキストファイルの差分を取る方法

Windows標準のコマンドにはdiffの代わりに「fc.exe」というものがあります。

コマンドプロンプトを起動し、コマンド説明を見てみます。例は標準のコマンドプロンプト、ユーザー名が「user」の場合です。

もしくは「fc /?」でも可能です。

Windowsで「fc.exe」を使って差分を取る方法

diffの代わりにWindowsのコマンド「fc.exe」を使って差分を取る方法です。

「fc.exe」は比較対象の二つのファイル名を指定すれば使えます。ヘルプで言う、「[ドライブ1:][パス1]ファイル名1」と、「[ドライブ2:][パス2]ファイル名2」が相当します。

ファイルがコマンドプロンプトに表示されているカレントディレクトリーにあればドライブ名とパス名、指定ドライブのカレントディレクトリーにあればパス名を省略できるので、ドライブとパス指定の部分が「[ ]」で囲まれています。

ファイルの指定方法はdiffも「fc.exe」も同じです。

例えばカレントディレクトリーが「C:\Users\user」の場合に、「C:\data」フォルダで「001.csv」と「002.csv」を比較する場合は、以下のようにカレントディレクトリーの移動とファイル比較のコマンドを入力します。

Windowsのコマンド「fc.exe」でファイルを比較する

実際にWindowsのコマンド「fc.exe」を使ってファイルを比較します。

まずは例として比較対象のファイル「001.csv」と「002.csv」を以下の内容でC:\dataというフォルダーに作ったとします。

二つのファイルの違いは、「ID」が「A002」の項目「価格」がそれぞれ「500」、「550」であること、「ID」が「A005」の行が001.csvにしかないこと、「ID」が「A010」の項目「価格」がそれぞれ「370」、「400」であること、「ID」が「A011」の行が002.csvにしかないことです。

この二つのファイルの差分を「fc.exe」で取ると以下のようになります。

Linuxのdiffとは違ってWindowsの「fc.exe」では、相違する行の上下の行も表示されます。相違する行の表示が連続する場合は連続した相違部分として表示され、相違する行の前後に行がなければ表示されません。

Windowsのコマンド「fc.exe」で使えるオプション

Windowsのコマンド「fc.exe」にはいくつかオプションがあり、挙動を変更できます。テキストの比較で表示フォーマットを変更する、「/A」、「/N」、「/nnnn」について解説します。

「/A」オプション

「/A」オプションは相違部分の1行目と最後の行だけを表示します。「fc.exe」の仕様として、相違する行の前後も表示されますので、多くの場合、一致する行が表示されます。

このように、相違点として表示する行が3行だと変わらず、4行以上の場合に間の行を「…」と表示します。

「/N」オプション

Windowsの「fc.exe」コマンドの「/N」オプションは、相違部分の表示に指定ファイルそれぞれの行番号を付加します。行番号と相違部分の表示は「:」記号で区切られます。

「/nnnn」オプション

Windowsの「fc.exe」コマンドの「/nnnn」オプションは「nnnn」の部分には数字が入ります。この数字が一致部分と判断する行数を指定します。

相違部分をまとめて表示したい場合は大きく、出来るだけ個別に表示したい場合は小さく設定します。デフォルトでは「/2」が指定されています。

「/1」を指定した場合は以下の通りです。

デフォルトでは相違部分が2つの表示でしたが、「/1」を指定すると3つに分けて表示されています。

「/2」を指定した場合は以下の通り、デフォルトと同様になります。

Windowsですぐにdiffを取る方法を覚えておきましょう

Windows標準でdiffを取る場合は「fc.exe」コマンドを使用します。相違する行の前後も表示される仕様ですので、とっさに使う必要が出来た時に使い慣れていれば混乱せずに済むでしょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。