Per Batch/cmd hunderte .txt files in ein .txt zusammenfassen?
Wie beschrieben möchte ich via batch/cmd (oder gerne auch sonst wie) hunderte Notizen in EIN TextFile zusammenfassen um es wie ein Buch drucken zu können.
Am besten sind die Notizen mit einem Trennstrich aus Unterstrichen oder ähnliches optisch getrennt.
Hat jemand eine elegante Lösung?
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
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...;)
Vielen vielen Dank :D Sieht sehr schön aus. Hat mir sehr geholfen.
... 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 ----------))
Danke das probiere ich gleich. Allerdings habe ich dann noch keine Trennstriche wie oben angegeben.