2007'04.22.Sun
ファイル比較のプログラムとして、手軽に使えるものに、Windows に付属している FC コマンドがあります(コマンドプロンプトから使う)。
このコマンドは、何もオプションを指定せずに実行すると、改行コード「CR + LF」と「LF のみ」の違いを無視するようです(テキストファイルの比較の場合)。つまり、改行コードだけが異なるテキストファイルを比較すると、同じであるとみなされます。
ところが、
というデータの最後("↓" の部分)を CR + LF にした A.TXT と、LF のみにした B.TXT を作って、
とやると、なぜか「差異あり」となってしまいます(しかも、ファイルの内容が出力されません)。
どうやら、改行を除く文字数が 127 のときだけ(?)、CR + LF と LF を区別するようなのです。63 文字とか 254 文字では発生しません。
おそらくバグだと思うのですが、Windows 2000 付属のものでも、XP 付属のものでも同じでした。
このコマンドは、何もオプションを指定せずに実行すると、改行コード「CR + LF」と「LF のみ」の違いを無視するようです(テキストファイルの比較の場合)。つまり、改行コードだけが異なるテキストファイルを比較すると、同じであるとみなされます。
ところが、
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567↓
というデータの最後("↓" の部分)を CR + LF にした A.TXT と、LF のみにした B.TXT を作って、
C:\> FC A.TXT B.TXT
とやると、なぜか「差異あり」となってしまいます(しかも、ファイルの内容が出力されません)。
L:\Tmp>fc A.TXT B.TXT
ファイル A.TXT と B.TXT を比較しています
***** A.TXT
***** B.TXT
*****
どうやら、改行を除く文字数が 127 のときだけ(?)、CR + LF と LF を区別するようなのです。63 文字とか 254 文字では発生しません。
おそらくバグだと思うのですが、Windows 2000 付属のものでも、XP 付属のものでも同じでした。
ちなみに、FC はデフォルトではタブをスペースに展開してから比較するようですが、内部的には、8タブ扱いのようです。
というのは、
というファイル("→" はタブ)と
というファイル("□"は半角スペース)を比較すると「差異なし」ですが、
というファイルを比較すると「差異あり」になります。
このため、上記の改行の問題は、タブが含まれる行では、8タブ展開した結果が 127 文字になったときに発生します。
Windowsでコマンドプロンプトを使う時に役に立ちました。
というのは、
→x
というファイル("→" はタブ)と
□□□□□□□□x
というファイル("□"は半角スペース)を比較すると「差異なし」ですが、
□□□□x
というファイルを比較すると「差異あり」になります。
このため、上記の改行の問題は、タブが含まれる行では、8タブ展開した結果が 127 文字になったときに発生します。
Windows DOS/コマンドプロンプト辞典
posted with amazlet on 07.04.22
飯島 弘文
翔泳社 (2003/08/23)
売り上げランキング: 20120
翔泳社 (2003/08/23)
売り上げランキング: 20120
おすすめ度の平均:
DOSを使う方、興味のある方には最良の書だと思いますWindowsでコマンドプロンプトを使う時に役に立ちました。
PR
カウンター
カレンダー
最新記事
(04/22)
(04/06)
(04/02)
(03/24)
(03/21)
広告
最新トラックバック
最新コメント
プロフィール
HN:
argv
性別:
非公開
ブログ内検索
アクセス解析