Birden fazla dosyayı birleştirmek için bir komut satırı veya toplu iş cmd'si


99

Bir dizinde 50 tane metin dosyası var.

Bu dosyaları tek bir dosyada birleştirmek için bir Windows komut satırı yöntemi var mı?

Windows Vista kullanıyorum .

Tüm dosyaların adını yazmak istemiyorum.


hangi DOS sürümünü kullanıyorsunuz :) hadi, bize biraz daha bilgi verin, hangi dosya türlerini ... açıkçası bu dosyaları birleştirmenin bir yolunu arıyorsunuz.

Yazı düzenleniyor
Mirage

2
Windows NT tabanlı işletim sistemlerinde DOS (NT, 2000 ve XP'den beri her şey) gerçekten DOS değil, "cmd.exe" adlı bir komut kabuğu. bunu yansıtmak için DOS etiketlerini kaldırdı.
quack quixote

bunun için üzgünüm, bunu gerçekten bilmiyordum. DOS
Mirage

1
Neyse ki, DOS son izleri, Windows ME ile öldü. :) ama endişelenmeyin - çoğu herkes hala Windows komut satırını "DOS" olarak adlandırıyor, bu yüzden yanlış değil , sadece yanlış . Hala gerçek DOS kullanıldığından, yalnızca gerçek DOS soruları olacak şekilde DOS etiketini temizliyorum.
quack quixote

Yanıtlar:


128

Tüm dosyaların adını yazmak istemiyorum.

Kaçınılması kolay. Bu klasöre bir komut istemi açın ve aşağıdaki komutu yazın:

copy /b *.txt newfile.txt

Tuşuna basın Enter.

Artık bu klasördeki tüm metin dosyalarının, tarihine göre sıralı olarak, newfile.txt adlı tek bir dosyada birleştirilerek elde edilmesini sağlayacaksınız.

Nihai hedefim, her bir metin dosyasının içeriğini bir Excel sayfasının ayrı bir sütununda saklamak.

"Nihai hedefinize" ulaşmanıza yardımcı olabilecek bir öğretici:

Bir klasördeki tüm CSV veya TXT dosyalarını tek bir çalışma sayfasında birleştirin


Her dosyadan sonra yeni bir satır karakteri eklemek mümkün müdür
Mirage

bu yöntemle değil.
quack quixote

diğer seçenekler ne. nihai amacım, her bir metin dosyasının içeriğini excel sayfasının ayrı sütununda saklamak. Herhangi bir fikir
Mirage

@Mirage - Cevabımı yorumunuza göre güncelledi.

Fakat sorun şu ki, her bir metin dosyasına bitiş karakterini nasıl ekleyebilirim. Şu anda bazı dosyalar metni birleştirilmiş dosyada aynı paragraftadır, bu nedenle excel bir sütuna koydu. VEYA eğer önce tüm dosyalara bir son karakter ekleyebilir ve sonra birleştirme işlemini yapabilirsem
Mirage

38

Her bir birleştirilmiş dosyanın sonuna bir newLine eklemek için, typeyerine copyaşağıdakileri kullanın:

type *.txt > newfile.txt

5
UYARI: * .txt> newfile.txt türünü kullandığınızda , metin çoğaltılır.
Malganis

2
Kaldır .txtdan newfileve bam! İşte aldın.
fa wildchild

Bu, günlük dosyalarını veya yoldan ayrıştıracağınız diğer şeyleri birleştirmek için harika bir cevaptır. type x.log.* > merged.logBir toplu iş dosyası olmadan yapabileceğiniz gerçek . Yeni hatlarla uğraşmak oldukça kolaydır.
Daniel Chapman

1
Vay, typeDOS 3.3'ten bu yana çok yol kat etti. Dosya maskeleri kullanabileceğinizi bilmiyordum. Bu ne zaman oldu?
Güneş,

32

Metin dosyaları eklemek hakkında konuştuğunuzu varsayarak, copykomut birlikte bunları eklemek için kullanılabilir:

copy file1+file2+file3 targetfile

Çok sayıda dosyanız varsa, her seferinde bir dosya ekleyerek döngü oluşturabilirsiniz.

İkili dosyalar için ' /b' seçeneğini ekleyin :

copy /b file1+file2+file3 targetfile

Bu, birlikte çalıştığınız ikili dosyaların arka arkaya eklenebileceğini varsayar; eğer değilse, bir miktar yararsız veri elde edersiniz.


5
Dosyaları belirli bir sırayla birleştirmeniz gerekirse, bu oldukça kullanışlıdır.
kapex


8

Komut isteminde aşağıdaki komutu çalıştırın:

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

1
Beklendiği gibi çalışmaz, tüm metin kopyalanıroutput.txt
DavidPostill

3
İpucu * .txt, output.txt ile eşleşiyor
DavidPostill

@DavidPostill, cevabınızı endişelerinize göre düzenledim.
Saran

3

Aşağıdaki .bat dosyası, XIT.for adındakiler dışındaki tüm * .for dosyalarını MASTER.for adındaki boş bir dosyaya ekler.

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

:)


2
Yukarıdakileri hafifçe bükün: eğer dosyalar alfabetik olarak birleştirildiğinden emin olmak istiyorsa , birinin kullanması gerekir: FOR / F %% G IN ('dir / b / o *. For') "%% G" DEĞİLDİR == "XIT. for" kopyala / A MASTER. for + "%% G" ve & echo için. >> MASTER.for
Guido Domenici

Bunu severim. Bugün ihtiyacım olan bir başka ince ayar, girdi dosyalarını ayırmak için bir dosya adı başlığının dosyaya yazdırılması. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Curtis Fiyatı

Bir bash kabuğu kullanmanın muhtemelen daha anlamlı olacağını biliyorum!
Curtis Fiyatı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.