Per Batch/cmd hunderte .txt files in ein .txt zusammenfassen?

4 Antworten

Bei Dateien zusammenfassen musste ich zuerst an so etwas denken:

copy /B *.txt result.txt

Wenn du aber eine schöne Ausgabe haben willst, braucht man wohl eine for-Schleife:

set "directory=%~dp0"
set "delimeter=__________________________"

if exist %directory%\result.txt del %directory%\result.txt
if exist %tmp%\result del %tmp%\result

for %%F in (%directory%\*.txt) do (echo.%delimeter%&echo.&echo.%%~nxF:&echo.%delimeter%&echo.&type "%%~fF"&echo.&echo.)>>%tmp%\result

type %tmp%\result > %directory%\result.txt
del %tmp%\result

das hier sollte ganz gut funktionieren, da die Ausgabedatei nicht wieder in sich selbst gedruckt wird. Vom Aussehen her auch ganz akzeptabel, den Trenn-String sowie die echo Befehle kannst ja ganz einfach beliebig anpassen.

Um zum Beispiel nicht die Dateinamen mit auszugeben, einfach das hier aus dem do Teil der for-Schleife löschen:

echo.%delimeter%&echo.&echo.%%~nxF:

~Tim

am einfachsten bekommt man das in einem kleinen for-loop hin:

 for /f %%a in ("*.txt") do ( type %%a >>sammeltxt.txt )

Erklärung: Alle Dateien im Verzeichnis die dem Namensmuster *.txt entsprechen werden nacheinander der variable %%a zugewiesen. Type %%a "druckt" die Datei %%a. >>sammel.txt leidet die Ausgabe in die Datei Sammel.txt um.

simpler Einzeiler

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

IchFragHaltErst 
Beitragsersteller
 10.04.2018, 08:51

Danke das probiere ich gleich. Allerdings habe ich dann noch keine Trennstriche wie oben angegeben.

0
Erzesel  10.04.2018, 09:16
@IchFragHaltErst
for %%a in ("*.txt") do ( 
echo: >>sammeltxt.txt 
echo ***************************************************** >>sammeltxt.txt 
echo: >>sammeltxt.txt 
echo %%a >>sammeltxt.txt 
echo ======^> >>sammeltxt.txt 

type "%%a" >>sammeltxt.txt 

echo  blahh und blubbb >>sammeltxt.txt
)

PS : mein Fehler oben! For ohne parameter "/f" verwenden...

Trennungen : zwischen den einzelnen texten sind trivial du kannst innerhalb des do-Blocks in die zieldatei umleiden was Dir beliebt...;)

2
IchFragHaltErst 
Beitragsersteller
 10.04.2018, 10:50
@Erzesel

Vielen vielen Dank :D Sieht sehr schön aus. Hat mir sehr geholfen.

0

... warum nicht einfach im DOS:

Vorraussetzung eigenes Verzeichnis nur mit den TXT Dateien
im Verzeichnis den Befehl

cp *.txt gesamt.txt

?

tomkaller

Bastel eine Batch mit folgendem Inhalt:

@echo off
>Ausgabe.txt (for %%a in (*.txt) do (type "%%a" &echo ----------))

Das sind nur zwei Zeilen, und nach dem "&echo" ist ein Leerzeichen

also

(type "%%a" &echo ----------))