Baris perintah atau kumpulan cmd untuk menggabungkan beberapa file

99

Saya memiliki 50 file teks dalam satu direktori.

Apakah ada metode baris perintah Windows untuk menggabungkan file-file itu menjadi satu file?

Saya menggunakan Windows Vista .

Saya tidak ingin mengetik nama semua file.

Fatamorgana
sumber
versi DOS apa yang Anda gunakan? :) ayolah, beri kami info lebih lanjut, jenis file apa ... Anda jelas sedang mencari cara untuk menggabungkan file-file itu.
Pos diedit
Mirage
2
DOS di OS berbasis Windows NT (NT, 2000, dan semuanya sejak XP) sebenarnya bukan DOS, itu adalah shell perintah yang disebut "cmd.exe". menghapus tag DOS untuk mencerminkan ini.
quack quixote
maaf untuk itu, saya benar-benar tidak tahu itu. Saya berpikir sebagai DOS
Mirage
1
untungnya, sisa-sisa terakhir DOS mati dengan Windows ME. :) tapi jangan khawatir - kebanyakan orang masih memanggil baris perintah Windows "DOS", jadi tidak salah , hanya tidak akurat . karena DOS yang sebenarnya masih sering digunakan, saya membersihkan tag DOS menjadi pertanyaan DOS yang sebenarnya.
quack quixote

Jawaban:

128

Saya tidak ingin mengetik nama semua file.

Itu mudah dihindari. Buka prompt perintah di folder ini dan ketik perintah berikut:

copy /b *.txt newfile.txt

Tekan Enter.

Sekarang Anda akan memiliki semua file teks dalam folder ini diurutkan berdasarkan tanggal naik bergabung menjadi satu file bernama newfile.txt.

Tujuan utama saya adalah untuk menyimpan konten setiap file teks dalam kolom terpisah dari lembar Excel.

Berikut tutorial yang dapat membantu Anda mencapai "tujuan akhir" Anda:

Gabungkan semua file CSV atau TXT dalam folder dalam satu lembar kerja

Peter Mortensen
sumber
Apakah mungkin untuk menyisipkan karakter baris baru setelah setiap file
Mirage
tidak dengan metode ini.
quack quixote
apa opsi lainnya. Tujuan utama saya adalah untuk menyimpan konten setiap file teks dalam kolom terpisah dari lembar excel. Gagasan saya
Mirage
@ Mirage - memperbarui jawaban saya sesuai dengan komentar Anda.
Tetapi masalahnya adalah bagaimana saya bisa menambahkan karakter endline ke setiap file teks. Saat ini beberapa file teks dalam paragraf yang sama dalam file yang digabungkan, jadi excel letakkan di satu kolom. ATAU jika saya dapat menambahkan beberapa karakter endline ke semua file terlebih dahulu dan kemudian melakukan operasi gabungan
Mirage
38

Untuk menambahkan newLine di akhir setiap file yang digabungkan, gunakan typesebagai ganti copy, sebagai berikut:

type *.txt > newfile.txt
Echeban
sumber
5
PERINGATAN: Ketika Anda menggunakan ketik * .txt> newfile.txt , teks akan diduplikasi.
Malganis
2
Hapus .txtdari newfiledan bam! Itu dia.
fa wildchild
Ini adalah jawaban yang luar biasa untuk menggabungkan file log atau hal-hal lain yang akan Anda uraikan. Khususnya fakta yang dapat Anda lakukan type x.log.* > merged.logtanpa file batch. Baris baru cukup mudah untuk ditangani.
Daniel Chapman
1
Wow, typesudah jauh sejak DOS 3.3. Saya tidak tahu Anda bisa menggunakan file mask. Kapan itu terjadi?
Minggu
32

Dengan asumsi Anda berbicara tentang menambahkan file teks, copyperintah dapat digunakan untuk menambahkannya bersama:

copy file1+file2+file3 targetfile

Jika Anda memiliki banyak file, Anda dapat mengulang dengan menambahkan satu file sekaligus.

Untuk file biner, tambahkan opsi ' /b':

copy /b file1+file2+file3 targetfile

Ini mengasumsikan bahwa Anda tahu file biner yang Anda kerjakan dapat ditambahkan kembali-ke-belakang; jika tidak, Anda akan mendapatkan segumpal data yang tidak berguna.

nik
sumber
5
Ini cukup berguna jika Anda perlu menyatukan file dalam urutan tertentu.
kapex
8

Jalankan perintah berikut di prompt perintah:

for %f in (*.txt) do type "%f" >> output.txt
Abhishek Goel
sumber
1
Itu tidak berfungsi seperti yang diharapkan, semua teks digandakan dalamoutput.txt
DavidPostill
3
Petunjuk * .txt cocok dengan output.txt
DavidPostill
@ Davidvid, Saya telah mengedit jawaban sesuai dengan keprihatinan Anda.
Saran
3

File .bat berikut akan menambahkan semua *. Untuk file, kecuali yang bernama XIT.for, ke file kosong bernama MASTER.for

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

:)

Echeban
sumber
2
Sedikit perubahan pada hal di atas: jika seseorang ingin memastikan file-file tersebut digabungkan secara abjad , seseorang harus menggunakan: UNTUK / F %% G IN ('dir / b / o * .for') JIKA TIDAK "%% G" == "XIT.for" copy / A MASTER.for + "%% G" && echo. >> MASTER.for
Guido Domenici
Saya suka ini. Tweak lain yang saya butuhkan hari ini adalah untuk header nama file yang akan dicetak ke dalam file untuk memisahkan file input. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Harga Curtis
Saya sadar bahwa menggunakan shell pesta mungkin lebih masuk akal!
Harga Curtis