複数のファイルを連結するコマンドラインまたはバッチcmd


99

1つのディレクトリに50個のテキストファイルがあります。

これらのファイルを単一のファイルに連結するWindowsコマンドラインの方法はありますか?

Windows Vistaを使用しています

すべてのファイルの名前を入力したくありません。


どのバージョンのDOSを使用していますか?:)さて、もう少し情報、ファイルの種類を教えてください...明らかにそれらのファイルをマージする方法を探しています。

投稿が編集されました
ミラージュ

2
Windows NTベースのOS(NT、2000、およびXP以降のすべて)のDOSは、実際にはDOSではなく、「cmd.exe」と呼ばれるコマンドシェルです。これを反映するためにDOSタグを削除しました。
いんちきキホーテ

申し訳ありませんが、私は本当にそれを知りませんでした。私はDOSのように考えていた
ミラージュ

1
ありがたいことに、DOSの最後の痕跡はWindows MEで死にました。:)しかし心配はありません-ほとんどの人はまだWindowsコマンドラインを「DOS」と呼んでいるので、それは間違いではなく、単に不正確です。本当のDOSがまだ時々使用されるので、DOSタグをクリーンアップして、本当のDOSの質問にしています。
いんちきキホーテ

回答:


128

すべてのファイルの名前を入力したくありません。

それは簡単に回避できます。このフォルダーでコマンドプロンプトを開き、次のコマンドを入力します。

copy /b *.txt newfile.txt

を押しEnterます。

これで、このフォルダー内のすべてのテキストファイルが日付の昇順で並べ替えられ、newfile.txtという単一のファイルにマージされます。

私の最終的な目的は、各テキストファイルの内容をExcelシートの個別の列に保存することです。

「究極の目標」を達成するのに役立つチュートリアルを次に示します。

1つのワークシート内のフォルダー内のすべてのCSVまたはTXTファイルを結合する


すべてのファイルの後に改行文字を挿入することは可能ですか
Mirage

この方法ではありません。
いんちきキホーテ

他のオプションは何ですか。私の究極の目的は、各テキストファイルの内容をExcelシートの別々の列に保存することです。ANyアイデア
ミラージュ

@Mirage-コメントに従って私の回答を更新しました。

しかし、問題は、各テキストファイルにエンドライン文字を追加する方法です。現在、ファイルのテキストの一部は、マージされたファイル内の同じ段落にあるため、Excelで1列に配置します。または私が最初にすべてのファイルにいくつかの終了行の文字を追加して、マージ操作を実行できるかどうか
ミラージュ

38

連結された各ファイルの最後にnewLineを追加するtypeにはcopy、次のように、の代わりに使用します。

type *.txt > newfile.txt

5
警告:タイプ* .txt> newfile.txtを使用すると、テキストが複製されます。
マルガニス

2
.txtから削除しnewfileてバム!そこにあります。
fa wildchild

これは、ログファイルを連結したり、今後解析する他の物に対する素晴らしい答えです。具体的にはtype x.log.* > merged.log、バッチファイルなしで実行できるという事実です。新しい行の処理は非常に簡単です。
ダニエルチャップマン

1
うわー、typeDOS 3.3から長い道のりを歩んできました。ファイルマスクを使用できるとは知りませんでした。それはいつ起こったのですか?

32

テキストファイルの追加について話していると仮定すると、copyコマンドを使用してそれらを一緒に追加できます。

copy file1+file2+file3 targetfile

多くのファイルがある場合は、一度に1つのファイルを追加することでループできます。

バイナリファイル/bの場合、 ' 'オプションを追加します。

copy /b file1+file2+file3 targetfile

これは、作業中のバイナリファイルを連続して追加できることを前提としています。そうでない場合は、無駄なデータの塊を取得します。


5
これは、特定の順序でファイルを連結する必要がある場合に非常に便利です。
kapex


8

コマンドプロンプトで次のコマンドを実行します。

for %f in (*.txt) do type "%f" >> output.txt

1
それは期待どおりに機能せず、すべてのテキストが複製されますoutput.txt
DavidPostill

3
ヒント* .txtはoutput.txtと一致します
DavidPostill

@DavidPostill、私はあなたの懸念に従って答えを編集しました。
サラン

3

次の.batファイルは、XIT.forという名前のファイルを除くすべての* .forファイルを、MASTER.forという名前の空のファイルに追加します。

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


2
上記を少しひねります:ファイルがアルファベット順に連結されていることを確認したい場合は、次を使用する必要があります:FOR / F %% G IN( 'dir / b / o * .for')DO IF NOT "%% G" == "XIT.for" copy / A MASTER.for + "%% G" && echo。>> MASTER.for
グイド・ドメニチ

私はこれが好き。今日必要なもう1つの調整は、ファイル名ヘッダーをファイルに出力して入力ファイルを分離することです。 for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
カーティス価格

私は、bashシェルを使用するとおそらくより意味があることを認識しています!
カーティス価格
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.