• ベストアンサー

制御コード「^Z」とは何ですか?

こんにちは。 2つのテキストファイルをDOSのcopyコマンドで結合したところ、出力ファイルの末尾に制御コードの「^Z」が付加されているように見えました。 1.この文字は何を意味するのでしょうか? 2.なぜ付加されるのでしょうか。 3.copyコマンドの結合で付加させないようにすることはできるのでしょうか。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#194317
noname#194317
回答No.3

意味は、すでに説明されているとおりです。 付加するかどうかは、エディタの設定によります。XP付属のメモ帳(notepad.exe)では こうなります。 1)メモ帳で作成・保存しても、付加されない。 2)既存のファイルを編集した場合、元々のファイルのままとなる。ただし、編集により EOFを削除した場合は消える。 ※EOFは、ファイルの終わりに黒い四角として表示されるので有無が解る 続いてCOPYコマンドでの扱いですが、やはり元々のファイル状態に従います。元から あれば付いたまま、なくても追加はされません。ただし、連結したことによって本来 ファイル終端だった部分が途中になるため、最後のEOF以外は削除されます。これは 削除しないとつじつまが合わなくなるためです。 COPYコマンドに/Bオプションを付けて実行した時は、途中のEOFはそのまま残ります。 こういう、複数のEOFを含むテキストファイルは何かと間違いや混乱の元になるので、 作らない方がよいでしょう。 そもそも、EOFでテキストの終わりだなんて約束さえなければ、COPYコマンドの/A,/B オプションそのものが必要ありませんでした。これは余談ですが。

kerberos_001
質問者

お礼

ご回答ありがとうございます。 大変よくわかりました。 どうもありがとうございました。

その他の回答 (2)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

EOFですが、ファイルの終わりはファイルサイズでわかるため情報としては不要です。 が、MS-DOSよりも古いOS(DOS)のCP/Mの時代にはファイルサイズがないため、ファイル中の^Zをいれてテキストファイルの終わりとしていました。 それがMS-DOSになってからもなぜか続いています。 CP/Mからのプログラムの移植でそのまま残った方が都合がいい、 ファイルの終わりには^Zをつける必要があるという誤解があった のような理由かと思います。 また、コピーに関しては出力先として con とか aux とか com とか選択できますが、この場合はファイルではないためサイズがわかりませんから、終わりがわかるように明示的につけているのかも知れません。 現在のWindows/DOSのテキストエディタでは、読み込み時はあってもなくても同じ、保存時は状態を保存、削除、設定により変更可能となっていると思います。 現在は、つけないほうがトラブルが少ないと思います。 特に他のOSへファイルを持ち込むような場合はあるとエラーの原因になることもあります。

kerberos_001
質問者

お礼

ご回答ありがとうございます。 大変よくわかりました。 どうもありがとうございました。

  • ftomo100
  • ベストアンサー率41% (297/723)
回答No.1

1.EOF(End of file)を表します。ファイルの終端という意味です。 2.テキスト形式ではかならず付加されます。 3./b オプションを付加すれば(バイナリで扱う)可能のようです。

kerberos_001
質問者

お礼

ご回答ありがとうございます。 なるほど~わかりました。 ありがとうございます。