DOSで、2つのASCIIデータをバイナリコピー(COPY /b)すると1バイトのゴミが入る場合があるのですが、なぜこのようになるのでしょうか?
しかし、必ずゴミが入るわけではないようにも思います。
→たまたま入る時がある?
→ASCIIデータの形によって、入る時がある?
バイナリコピーしない場合(COPY)は混在することは無いように思います。
昔、ASCIIデータは、バイナリコピーしない方が無難と聞いたことがある気もするのですが、昔過ぎて理由等忘れてしまいました。
詳しい方いらっしゃいましたらお教えいただけると助かります。
No.1ベストアンサー
- 回答日時:
手元の環境でやってみました(WindowsのDOS窓ですが)
その1バイト増えるごみ というのはもしかしたらファイルの最後に
付いておりデータとして 0x1A(16進) ではありませんか?
(此方でやった限り逆にアスキーコピーした時に付いてるようですが)
そうならファイルの終了マーカを意味している物ではないかと思います
http://support.microsoft.com/kb/29852/ja
ファイルの中間にデータが増えるとか言うのでしたら
具体的なファイルのダンプコードなどをチェックするか
ここに乗せた方がいいのではないかと思います
アスキー(テキスト)ファイルの作成方法によってはファイル終了マーカとして
最後に0x1Aが書き込まれます
例)
DOSプロンプト上で copy con ファイル名 等として直接ファイル入力
終了する時には CTRL+Z の入力となりそのような作成すると
0x1Aが書き込まれます
プログラムなどでファイル造作する場合でもアスキーモードで開けば
このデータは無視されるはずです
No.2
- 回答日時:
No1回答者さんからも指摘がありますが、テキストファイルの末尾にあるEOFコードがその正体でしょう。
ただこれも、どのテキストファイルにも存在するかというと、必ずしもそうとは言い切れません。Windows付属のメモ帳(NOTEPAD.EXE)で作成したテキストファイルも、確かWin98の頃にはもうEOFコードは付かなくなっていたと思います。もはやEOF自体が、かなり歴史的理由のためだけに存在するものになっているため、なくても問題ないでしょう。今となっては、EOFがあることで問題を起こすことの方が多いかも知れません。また、これはDOSの頃からの伝統ですが、COPYの/Bオプションの機能は、複数ファイルを結合する時、ファイル内にEOFコードがあってもそこで停止しないようにするだけです。なので、もし結合するバイナリファイルの中にEOFと同じデータがない場合は、/Bをつけてもつけなくても動作は同じです。これとは逆に、末尾がEOFでないテキストファイルを結合する時も、やはり/Bの有無には関係なく同じファイルが出来上がります。
テキストとバイナリでファイルを区別することは、フロッピーですら贅沢品であった時代の遺物と言ってよいのでは?今はもう個人でも普通にGB単位の大きさのファイルを扱う時代です。マシンパワーもファイル管理ごときでは負荷らしい負荷になりません。テキストかバイナリかでコマンドの動作を変えることの合理性は、すでにほぼ失われたと個人的には思います。
余談ながら、ftp転送でも同様にテキストとバイナリを区別できますが、これもやはり歴史的理由と言えるでしょう。良かれと思ってテキストモードで転送したのに、サーバ側で勝手に改行コードや文字コードを変えられてしまい、えらい目に遭ったなんて言うトラブルもありますし、こちらも害の方が目立つ状況です。全てバイナリモードでアップロードすれば、こうした問題は起きないので、普通のユーザーにとってはむしろ確実です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) exFATの外付けSSDからパソコンのNTFSの内蔵ストレージにコピーした場合はコピーしたデータのハ 2 2023/08/09 19:51
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- その他(コンピューター・テクノロジー) なぜデータの整合性を確認する時はハッシュ値で確認するのでしょうか?ハッシュ値は衝突する可能性があるの 5 2023/07/05 20:38
- サーバー ファイルサーバのデータのバックアップ 1 2023/03/15 10:30
- その他(プログラミング・Web制作) 質問です。 sdカード内に、データ①があります。これはaというファイルに入っています。sd→a→①で 4 2023/07/24 14:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
ファイルの先頭行を全て削除したい
-
ファイルの単位
-
onedriveの中身を削除したらパ...
-
Windows10 フォルダ内の自動並...
-
同期センターのマークが出てま...
-
バッチファイルで変数の中身を...
-
教えてください!困ってます。
-
コマンドプロンプトによるフォ...
-
emlをtxtに変換するには?
-
teratrermを使ったデータの送信...
-
ファイル操作(削除など…)の履...
-
macのdmgファイル(動画)をMP4...
-
共有フォルダ内のファイル使用...
-
拡張子: .db ファイルが開けない
-
mrl→midファイルへ
-
ファイルソートができるMac用フ...
-
ファイル名に#***#
-
バッチファイルからタスクスケ...
-
バッチで前方一致検索を教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
onedriveの中身を削除したらパ...
-
同期センターのマークが出てま...
-
教えてください!困ってます。
-
ファイルの先頭行を全て削除したい
-
コマンドプロンプトによるフォ...
-
emlをtxtに変換するには?
-
バッチファイルで変数の中身を...
-
ファイルの単位
-
Windows10 フォルダ内の自動並...
-
クラリスワークスのファイルを...
-
iMovieとgifファイルの読み込み...
-
macのdmgファイル(動画)をMP4...
-
mrl→midファイルへ
-
フォルダ内の一覧を印刷するには?
-
外字ファイル、eudc.tte と e...
-
office365 ファイルを削除したい
-
バッチファイルからタスクスケ...
-
VScodeでjarファイルを開く方法
-
.pkgというファイルについて。
おすすめ情報