web-dev-qa-db-ja.com

DOSのcopyコマンドを使用してファイルを効率的に追加する方法はありますか?

DOSのcopyコマンド構文を使用してファイルを連結します。

copy file1.txt+file2.txt all.txt

私はこれができることを知っています...

copy file1.txt+file2.txt file1.txt

これは効率的ですか?それは私が期待していることをしていますか?それは機能しますが、私はそれが実際にfile1.txtに追加するのか、それともfile1.txtをコピーして(悪い)、file2を連結してからfile1.txtに名前を変更するのか(これは効率的ではない)を知りたいですか?

6
clsturgeon

copyfile1.txtfile2.txtをメモリにコピーして連結し、file1.txtに書き込みます。新しいファイルにコピーしてからそのファイルの名前を変更するのではないので、実際には余分なディスクI/Oはほとんどありません。

typeを使用することもできます。

type file2.txt >> file1.txt

>>演算子はテキストを追加します。しかし、それはもちろん、バイナリファイルでは機能しません。

10
Tyler

これは効率的ですか?

承知しました。ただし、/bスイッチを使用すると、ファイルをテキストとして処理するのではなく、単にバイトを連結するだけでパフォーマンスを向上できます。これは、非常に大きなテキストファイルを連結する場合に特に顕著です。

それは私が期待していることをしていますか?

通常は可能ですが、ファイルがLinux、Mac、または異なるファイル/ラインターミネーターを持つ他のシステムで作成された場合、予期しない結果が生じる可能性があります。テキストファイルの場合でも、一般に/bスイッチを使用することをお勧めします。

私はそれが実際にfile1.txtに追加しているか、それともfile1.txtをコピーして(悪い)、file2を連結してからfile1.txtに名前を変更しているか(効率的ではない)を知りたいですか?

はい、それは新しい一時ファイルを作成し、元のファイルを削除し、一時ファイルの名前を元の名前に変更しますが、削除と名前の変更には時間がかかりません。元のファイルが巨大でない限り、通常は(冗長)元のファイルのコピー。

2
Synetech

同じ拡張子の場合、これを行うことができます-

タイプ*.txt >> fileout.tmp

次に、fileout.tmpを適切な拡張子に。

0
Wilson