Batch: Mehrere .txt Dateien zu einer zusammenfügen, dabei jeweils die erste Zeile löschen
Hallo,
ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem Verzeichnis liegen, zu einer Datei zusammen zu fügen.
Dabei sollte jede Ursprungsdatei in eine neue Zeile der neuen Datei eingefügt werden und es sollte jeweils die erste Zeile gelöscht werden.
Kann mir vielleicht jemand helfen?
Danke!
ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem Verzeichnis liegen, zu einer Datei zusammen zu fügen.
Dabei sollte jede Ursprungsdatei in eine neue Zeile der neuen Datei eingefügt werden und es sollte jeweils die erste Zeile gelöscht werden.
Kann mir vielleicht jemand helfen?
Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 343647
Url: https://administrator.de/forum/batch-mehrere-txt-dateien-zu-einer-zusammenfuegen-dabei-jeweils-die-erste-zeile-loeschen-343647.html
Ausgedruckt am: 08.04.2025 um 19:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo piepmatz,
teste mal folgendes:
Wenn Du die Lösung mit der Dateinamensmaske nimmst, werden alle Dateien aus dem Quellverzeichnis, auf die die Maske passt, in alphabetischer Reihenfolge eingelesen und in die Zieldatei geschrieben.
Wenn Du vor dem Scriptlauf selbst eine Datei mit einer Liste der zu verarbeitenden Dateien erstellst, kannst Du die Reihenfolge, in der die Dateien verarbeitet werden, selbst bestimmen.
Falls die Namen Deiner Quelldateien z.B. deutsche Umlaute oder andere Sonderzeichen enthalten, musst Du die Datei mit der Dateinamensliste in der Zeichencodierung OEM 850 speichern. Das geht z.B. mit dem kostenlosen Editor Notepad++.
Grüße
Friemler
teste mal folgendes:
@echo off & setlocal
::======= Konfiguration =========
set "RootFolder=%UserProfile%\Desktop"
set "FileNamePattern=*.txt"
set "FileList=D:\FileList.txt"
set "OutFile=D:\bla.txt"
::===============================
::Wenn die Dateiliste bereits angelegt wurde soll sie benutzt werden
if exist "%FileList%" goto :ReadFromFile
::Ansonsten wird die Dateiliste aus den Angaben
::RootFolder und FileNamePattern erstellt
>"%FileList%" (
for %%f in ("%RootFolder%\%FileNamePattern%") do (
echo %%f
)
)
::Die Dateinamen aus der Dateiliste einlesen und den Inhalt der Dateien
::abzüglich der ersten Zeile in die Zieldatei schreiben, Leerzeilen incl.
:ReadFromFile
>"%OutFile%" (
for /f "usebackq delims=" %%a in ("%FileList%") do (
for /f "skip=1 tokens=1* delims=:" %%b in ('findstr /n "^" "%%a"') do (
echo(%%c
)
)
)
- In Zeile 4 das Verzeichnis eintragen, in dem Deine Quelldateien liegen.
- Entweder
- in Zeile 5 eine Dateinamensmaske eintragen oder
- in Zeile 6 den Pfad zu einer bereits existierenden Datei eintragen, die die vollständigen Pfade zu den zu verarbeitenden Dateien enthält.
- In Zeile 7 den vollständigen Pfad zur Zieldatei eintragen.
Wenn Du die Lösung mit der Dateinamensmaske nimmst, werden alle Dateien aus dem Quellverzeichnis, auf die die Maske passt, in alphabetischer Reihenfolge eingelesen und in die Zieldatei geschrieben.
Wenn Du vor dem Scriptlauf selbst eine Datei mit einer Liste der zu verarbeitenden Dateien erstellst, kannst Du die Reihenfolge, in der die Dateien verarbeitet werden, selbst bestimmen.
Falls die Namen Deiner Quelldateien z.B. deutsche Umlaute oder andere Sonderzeichen enthalten, musst Du die Datei mit der Dateinamensliste in der Zeichencodierung OEM 850 speichern. Das geht z.B. mit dem kostenlosen Editor Notepad++.
Grüße
Friemler
Moin piepmatz,
ich hatte mich wohl missverständlich ausgedrückt. Du darfst Die Variable
Wenn Du die Dateiliste nicht selbst erstellen möchtest, musst Du in der Variablen
als letzte Zeile an das Script anhängen, damit das Script keinen "Müll" hinterlässt.
Die Variable
Ob das Verzeichnis, das Du als
Du hast leider in Deinem Eröffnungsposting zu wenig Angaben zu Deinen Anforderungen gemacht (z.B. Welche Dateien (alle, oder nur bestimmte) sollen kopiert werden? In welcher Reihenfolge (alphabetisch sortiert nach ihrem Namen oder gibt es dazu bestimmte Vorgaben) sollen die Quelldateien in die Zieldatei geschrieben werden?). Ich habe deshalb versucht, Dir eine generische Lösung zu bauen, die Du an Deine Erfordernisse anpassen kannst. Dadurch wird eine Lösung natürlich immer etwas komplexer, als wenn man nur genau einen bestimmten Fall programmieren muss.
Grüße
Friemler
ich hatte mich wohl missverständlich ausgedrückt. Du darfst Die Variable
FileList
(Zeile 6 in meinem Script) nicht komplett entfernen.Wenn Du die Dateiliste nicht selbst erstellen möchtest, musst Du in der Variablen
FileList
trotzdem den Pfad zu einer Datei angeben, in die das Script seine selbst erstellte Dateiliste hinein schreiben kann. In dem Fall solltest Du evtl. noch eindel "%FileList%" > NUL
Die Variable
FileNamePattern
musst Du auf einen Wert setzen, der Deinen Anforderungen entspricht. Wenn Du bspw. alle Dateien im Quellverzeichnis unabhängig von ihrer Dateierweiterung verarbeiten möchtest, muss FileNamePattern
den Wert *.*
haben. Und ja, mit *.txt
erwischst Du alle Dateien mit der Endung .txt
.Ob das Verzeichnis, das Du als
RootPath
angegeben hast, auch existiert, kannst leider nur Du selbst überprüfen. Du hast leider in Deinem Eröffnungsposting zu wenig Angaben zu Deinen Anforderungen gemacht (z.B. Welche Dateien (alle, oder nur bestimmte) sollen kopiert werden? In welcher Reihenfolge (alphabetisch sortiert nach ihrem Namen oder gibt es dazu bestimmte Vorgaben) sollen die Quelldateien in die Zieldatei geschrieben werden?). Ich habe deshalb versucht, Dir eine generische Lösung zu bauen, die Du an Deine Erfordernisse anpassen kannst. Dadurch wird eine Lösung natürlich immer etwas komplexer, als wenn man nur genau einen bestimmten Fall programmieren muss.
Grüße
Friemler