Ein Befehlszeilen- oder Stapel-Cmd zum Verketten mehrerer Dateien

98

Ich habe 50 Textdateien in einem Verzeichnis.

Gibt es eine Windows-Befehlszeilenmethode, um diese Dateien in eine einzelne Datei zu verketten?

Ich benutze Windows Vista .

Ich möchte nicht den Namen aller Dateien eingeben.

Fata Morgana
quelle
Welche DOS-Version verwenden Sie? :) Komm schon, gib uns ein paar Infos, welche Dateitypen ... du suchst offensichtlich nach einer Möglichkeit, diese Dateien zusammenzuführen.
Der Beitrag wurde bearbeitet
Mirage
2
DOS ist in Windows NT-basierten Betriebssystemen (NT, 2000 und alles seit XP) nicht wirklich DOS, sondern eine Befehlsshell mit dem Namen "cmd.exe". DOS-Tags wurden entfernt, um dies widerzuspiegeln.
Quack Quixote
Entschuldigung, das wusste ich wirklich nicht. Ich dachte als DOS
Mirage
1
Zum Glück starben die letzten Überreste von DOS mit Windows ME. :) aber keine Sorge - die meisten rufen immer noch die Windows-Befehlszeile "DOS" auf, es ist also nicht falsch , nur ungenau . da manchmal noch echtes DOS verwendet wird, bereinige ich das DOS-Tag, um nur echte DOS-Fragen zu sein.
Quack Quixote

Antworten:

127

Ich möchte nicht den Namen aller Dateien eingeben.

Das ist leicht zu vermeiden. Öffnen Sie eine Eingabeaufforderung in diesem Ordner und geben Sie den folgenden Befehl ein:

copy /b *.txt newfile.txt

Drücken Sie Enter.

Jetzt haben Sie alle Textdateien in diesem Ordner, die nach Datum aufsteigend sortiert sind, in einer einzigen Datei mit dem Namen newfile.txt zusammengeführt.

Mein letztendliches Ziel ist es, den Inhalt jeder Textdatei in einer separaten Spalte einer Excel-Tabelle zu speichern.

Hier ist ein Tutorial, das Ihnen helfen kann, Ihr "ultimatives Ziel" zu erreichen:

Führen Sie alle CSV- oder TXT-Dateien in einem Ordner in einem Arbeitsblatt zusammen

Peter Mortensen
quelle
Ist es möglich, nach jeder Datei ein neues Zeilenzeichen einzufügen
Mirage
nicht mit dieser Methode.
Quack Quijote
Was ist die anderen Optionen. Mein letztendliches Ziel ist es, den Inhalt jeder Textdatei in einer separaten Spalte der Excel-Tabelle zu speichern. Irgendwelche Ideen
Mirage
@Mirage - hat meine Antwort entsprechend Ihres Kommentars aktualisiert.
Aber das Problem ist, wie ich das Endzeilenzeichen zu jeder Textdatei hinzufügen kann. Gegenwärtig befinden sich einige Textdateien in der zusammengeführten Datei in derselben Paragra. Daher sollten Sie Excel in eine Spalte schreiben. ODER wenn ich zuerst ein Endzeilenzeichen an alle Dateien anhängen und dann eine Zusammenführungsoperation ausführen kann
Mirage
38

Verwenden Sie zum Hinzufügen einer neuen Zeile am Ende jeder verketteten Datei typeanstelle von copyFolgendes:

type *.txt > newfile.txt
Echeban
quelle
5
WARNUNG: Wenn Sie * .txt> newfile.txt verwenden , wird der Text dupliziert.
Malganis
2
Entfernen Sie .txtaus newfileund bam! Hier hast du es.
fa wildchild
Dies ist eine großartige Antwort für das Verketten von Protokolldateien oder anderen Dingen, die Sie später analysieren werden. Insbesondere kann man type x.log.* > merged.logauf eine Batch-Datei verzichten. Neue Zeilen sind ziemlich einfach zu handhaben.
Daniel Chapman
1
Wow, typeseit DOS 3.3 ist ein langer Weg zurückgelegt worden. Ich wusste nicht, dass Sie Dateimasken verwenden können. Wann ist das passiert?
So,
32

Angenommen, Sie möchten Textdateien copyanhängen, können Sie sie mit dem Befehl zusammenfügen:

copy file1+file2+file3 targetfile

Wenn Sie über viele Dateien verfügen, können Sie eine Schleife ausführen, indem Sie jeweils eine Datei anhängen.

Fügen Sie für Binärdateien die /bOption ' ' hinzu:

copy /b file1+file2+file3 targetfile

Dies setzt voraus, dass Sie wissen, dass die Binärdateien, mit denen Sie arbeiten, hintereinander angehängt werden können. Wenn nicht, erhalten Sie einen Klumpen unbrauchbarer Daten.

nik
quelle
5
Dies ist sehr nützlich, wenn Sie Dateien in einer bestimmten Reihenfolge verketten müssen.
Kapex
Microsoft-Dokumente unter copy docs.microsoft.com/en-us/windows-server/administration/…
S Meaden
8

Führen Sie den folgenden Befehl an der Eingabeaufforderung aus:

for %f in (*.txt) do type "%f" >> output.txt
Abhishek Goel
quelle
1
Das funktioniert nicht wie erwartet, der gesamte Text wurde dupliziertoutput.txt
DavidPostill
3
Tipp * .txt stimmt mit output.txt überein
DavidPostill
@ DavidPostill, ich habe die Antwort entsprechend Ihrem Anliegen bearbeitet.
Saran
3

Die folgende .bat-Datei hängt alle * .for-Dateien mit Ausnahme der Datei mit dem Namen XIT.for an eine leere Datei mit dem Namen MASTER.for an

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

:)

Echeban
quelle
2
Eine kleine Änderung des oben Gesagten : Wenn Sie sicherstellen möchten , dass die Dateien alphabetisch verknüpft sind , sollten Sie Folgendes verwenden: FOR / F %% G IN ('dir / b / o * .for') DO IF NOT "%% G" == "XIT.for" copy / A MASTER.for + "%% G" && echo. >> MASTER.for
Guido Domenici
Ich mag das. Eine weitere Optimierung, die ich heute brauchte, besteht darin, dass ein Dateinamen-Header in die Datei gedruckt wird, um die Eingabedateien zu trennen. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Curtis Price
Mir ist bewusst, dass die Verwendung einer Bash-Shell wahrscheinlich sinnvoller wäre!
Curtis Price