2010-09-12[n年前へ]
■WindowsのコマンドプロンプトのCOPYコマンドの結合順序の謎
以前から、時折思い返す疑問が「Windowsのコマンドプロンプトから動かすCOPY copy a.txt+b.txt c.txt と入力すると、a.txtの後ろにb.txtを結合した結果をc.txtとして作成する、…はずだと思っています。バイナリファイルのオプション/Bを付けなければ、ファイル途中のEOFは削除され・末尾にEOFが一個付くように処理され、/Bを付けると、
copy /b a.txt+b.txt c.txtEOFの除去・付加処理がなされない、という具合に動くのだと、最初は思っていました。
しかし、COPYコマンドを使っていると、ファイルの結合順序が、指定した順番になっていないことも多いことに気が付きました。結合されたファイルは、何だか妙な具合にシャッフルされていることがあるのです。
最初は、何かの不具合で(テキスト)ファイルの途中にEOFが入り込んでいるせいかと考えました。そこで、/Bオプションを付けてみましたが、それでも、指定したはずの順番でファイルの内容が並んではくれないのです。
思うように動いてくれたとしたら、COPYコマンドはとても便利だと思うのですが、思うように動いてくれないとただの使えないコマンドになってしまいます。WindowsのコマンドプロンプトのCOPYコマンドの結合順序はどのように決まっているのでしょうか?思いのままに動かそうとしたならば、どのように使えば良いのでしょうか? その答えをご存知の方がいらっしゃいましたら、教えて頂ければ幸いです。