[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

fc【コマンド】

pointこの用語のポイント

pointWindowsで使えるコマンドだよ

pointファイルの内容を比較するよ

スポンサーリンク

簡単に書くよ

fc【コマンド】とは

2つのファイルの内容を比較するときに使うコマンド
です。

image piyo

詳しく書くよ

Windows系で使えます。

書き方は

fc [オプション] [ファイル1] [ファイル2]

です。

オプションはちらほらとあります。

オプション説明
/A違う部分の最初と最後と行のみを表示する
/Bバイナリファイルとして比較する
/C大文字・小文字を区別しない
/Lテキストファイルとして比較する
/LB【行数】違う部分が【行数】以上続いた場合は比較を止める。未指定時は100行
/Nテキストファイルの比較で、行番号を表示する
/OFFオフライン属性のファイルも対象にする
/OFFLINEオフライン属性のファイルも対象にする
/Tタブスペースに変換しない
/UUnicodeのテキストファイルとして比較する
/W連続するタブとスペースを一つのスペースに置き換える
/【行数】違う部分が見つかった後に【行数】分の行が連続で一致していたら「あっ、ここからは一致してるね」と判断する。未指定時は2行

ですね。

「fc」コマンドは、ファイルをテキストデータとして比較するときによく使います。
バイナリデータを比較したいときは「comp」コマンドを使うのが一般的ですよ。

それでは「fc」コマンドの使い方を見てみましょう。

例えば以下のようなファイルがあったとします。

■hoge.txt
1
2
3
4
5
6
7
8
9
10


■hoge2.txt
1
2a
3
4b
5
6
7
8
9c
10


見にくいので横に並べると、こんな感じですね。

fc

この2つのファイルに対して

fc hoge.txt hoge2.txt

を実行すると、以下のような結果になります。

ファイル hoge.txt と HOGE2.TXT を比較しています
***** hoge.txt
1
2
3
4
5
***** HOGE2.TXT
1
2a
3
4b
5
*****

***** hoge.txt
8
9
10
***** HOGE2.TXT
8
9c
10
*****


補足として、比較結果は違う部分に対して前後の行も併せて表示されます。
例えば「hoge.txt」の

2
3
4


の部分と「hoge2.txt」の

2a
3
4b


の部分が異なりますので、前後の1行も加えて

***** hoge.txt
1
2
3
4
5
***** HOGE2.TXT
1
2a
3
4b
5
*****


という内容が表示されているのです。
同じように「hoge.txt」の

9

の部分と「hoge2.txt」の

9c

の部分が異なりますので、前後の1行も加えて

***** hoge.txt
8
9
10
***** HOGE2.TXT
8
9c
10
*****


のような表示内容になっています。

これが「fc」コマンドの一番単純な使い方です。
使うのは難しくないですが、結果の見方に慣れが必要かもしれませんね。

次に補足が必要そうなオプションについて説明します。

まず「/L」オプションと「/B」オプションですが、「/L」がテキストデータとして比較、「/B」がバイナリデータとして比較するためのオプションです。
例えば「/L」オプションを指定して

fc /L hoge.txt hoge2.txt

を実行すると、結果が

ファイル hoge.txt と HOGE2.TXT を比較しています
***** hoge.txt
1
2
3
4
5
***** HOGE2.TXT
1
2a
3
4b
5
*****

***** hoge.txt
8
9
10
***** HOGE2.TXT
8
9c
10
*****


になるのに対し「/B」オプションを措定して

fc /B hoge.txt hoge2.txt

を実行すると、結果は

ファイル hoge.txt と HOGE2.TXT を比較しています
00000004: 0D 61
00000005: 0A 0D
00000006: 33 0A
00000007: 0D 33
00000008: 0A 0D
00000009: 34 0A
0000000A: 0D 34
0000000B: 0A 62
0000000C: 35 0D
0000000D: 0D 0A
0000000E: 0A 35
0000000F: 36 0D
00000010: 0D 0A
00000011: 0A 36
00000012: 37 0D
00000013: 0D 0A
00000014: 0A 37
00000015: 38 0D
00000016: 0D 0A
00000017: 0A 38
00000018: 39 0D
00000019: 0D 0A
0000001A: 0A 39
0000001B: 31 63
0000001C: 30 0D
0000001D: 0D 0A
0000001E: 0A 31
FC: HOGE2.TXT は hoge.txt より長いファイルです


になります。
見た目が全然違いますね。

「/L」「/B」共に未指定の場合は、ファイルの拡張子からテキストデータとして比較するかバイナリデータとして比較するかを自動判定してくれます。
拡張子が「.exe」「.bin」「.com」「.sys」「.obj」「.lib」のいずれかの場合はバイナリデータとして、それ以外の拡張子の場合はテキストデータとして比較してくれますよ。

次に「/A」オプションを指定してみます。
「/A」オプションは違う部分を表示する際に最後と最後の行のみを表示してくれるオプションです。
例えば

fc /A hoge.txt hoge2.txt

を実行すると、以下のような結果になります。

ファイル hoge.txt と HOGE2.TXT を比較しています
***** hoge.txt
1
...
5

***** HOGE2.TXT
1
...
5

*****

***** hoge.txt
8
9
10
***** HOGE2.TXT
8
9c
10
*****


「/A」オプション未指定時は

***** hoge.txt
1
2
3
4
5
***** HOGE2.TXT
1
2a
3
4b
5
*****


となっていた部分の途中が省略表示されて

***** hoge.txt
1
...
5
***** HOGE2.TXT
1
...
5
*****


になりましたね。
これが「/A」オプションの効果です。

次に「/LB【行数】」オプションですが、これは違う部分が多過ぎたら比較を止めちゃうオプションです。
おそらく、全然別のファイルを比較しちゃった場合の対策なのでしょうね。

例えば

fc /LB2 hoge.txt hoge2.txt

を実行すると、以下のような結果になります。

ファイル hoge.txt と HOGE2.TXT を比較しています
再同期に失敗しました。ファイルが著しく異なります。
***** hoge.txt
1
2
***** HOGE2.TXT
1
2a
*****


「/LB2」の指定は「違う部分が2行を越した場合(3行以上の場合)は処理を止めていーよ」の指定です。
違う部分が

***** hoge.txt
1
2
3
4
5
***** HOGE2.TXT
1
2a
3
4b
5
*****


のように3行(表示上は前後1行プラスして5行)あるので、処理を途中で止めちゃいました。
そして「再同期に失敗しました。ファイルが著しく異なります。」と言い訳をしているのです。

これが「/LB【行数】」オプションの動きです。
特に気にする必要は無いと思いますが、100行以上連続して違っても比較を止めたくない場合は使うかもしれないオプションです。
ちなみに「/LB【行数】」を未指定のときは「/LB100」を指定したのと同じ動きになります。

最後に「/【行数】」オプションですが、これは一度違う部分が見つかった後に再度「あぁ、ここからは一致しているね」と判断するための判断基準を指定するオプションです。
何も指定しない場合は「/2」を指定したのと同じ扱いで、2行以上連続で一致したら「あぁ、ここからは一致しているね」と判断します。

ここで「hoge.txt」と「hoge2.txt」をもう一度見てください。

fc

2つのファイルは「2」と「2a」が違います。
その次の行の「3」と「3」は同じです。
その次の行の「4」と「4b」は違います。
同じ行が連続して2行出てきませんでした。
そのためこの間は「まだ一致していない」つまり「ひとかたまりの違う部分」と判断されるのです。

その後「5」と「5」の行、「6」と「6」の行と連続して一致するので、違う部分が終わります。
その後再度「9」と「9c」で違う部分が出てくるので、これも別のかたまりの違う部分として扱われます。

fc3

「fc」コマンドさんは「一致している行が○行以上続いたら、違ってた部分は終わり」と判断しているのですが、その「○行」を変更するオプションが「/【行数】」オプションです。

違いを全部バラして別のかたまりとして表示したいときは「/1」を指定してください。
これは「ちょっとでも一致したら違う部分は終わり」の指定です。
例えば

fc /1 hoge.txt hoge2.txt

を実行すると、以下のような結果になります。

ファイル hoge.txt と HOGE2.TXT を比較しています
***** hoge.txt
1
2
3
***** HOGE2.TXT
1
2a
3
*****

***** hoge.txt
3
4
5
***** HOGE2.TXT
3
4b
5
*****

***** hoge.txt
8
9
10
***** HOGE2.TXT
8
9c
10
*****


「2」と「2a」、「4」と「4b」、「9」と「9c」がすべて別のかたまりとして表示されていますね。
前後1行ずつプラスされて表示されているのでちょっと分かりにくいですが、すべての相違点が別のかたまりとして表示されていますよ。

これが「fc」コマンドの使い方です。
使い方よりも結果の見方に慣れが必要ですね。

image piyo2

一言でまとめるよ

まぁ「fc」ってコマンドが出てきたら「ファイルの内容を比較するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク