meandmyself
Goto Top

Per Batch Inhalt von versch. Dateien eines Verz. in eine Datei mit Leerzeile getrennt kopieren

Schönen guten Abend,

bin schon eine Weile am suchen und Anfänger in puncto Batcherstellung.
Vielleicht fällt jemand ad hoc was dazu ein.

Es sollen in einem bestimmten Verzeichnis alle dort vorhandenen Inhalte von Textdateien in eine einzige Textdatei kopiert werden.

Bisher habe ich copy c:\temp\*.* e:\test.txt.

Der Inhalt jeder Datei soll allerdings durch einen Leerzeile getrennt in die test.txt geschrieben werden.

Besten Dank für Eure Tipps!

Content-ID: 87720

Url: https://administrator.de/contentid/87720

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

60730
60730 15.05.2008 um 19:54:55 Uhr
Goto Top
Servus,

ganz banal würde es ungefähr so gehen.

type c:\temp\*.txt >>c:\temp\test.ini

Da du aber eine Leerzeile dazwischen haben willst - mußt du es per For Schleife realisieren.
Und bei For Schleifen gibt es hier zwei richtig gute Profis.
Die haben bestimmt was in Petto face-wink
bastla
bastla 15.05.2008 um 20:53:02 Uhr
Goto Top
Hallo meandmyself und willkommen im Forum!

Wie von TimoBeil angesprochen, benötigst Du eine "for"-Schleife, um jede Datei einzeln ausgeben zu können - etwa so:
for %i in (c:\temp\*.*) do type "%i">>e:\test.txt & echo\>>e:\test.txt  
Wenn Du die obige Zeile nicht direkt eingeben, sondern in einem Batch verwenden willst, jeweils %%i schreiben, und falls Du eine bestimmte Reihenfolge der Dateien benötigst oder Dich der Schönheitsfehler "Leerzeile am Ende der Zieldatei" stört, sag Bescheid.

[Edit] Etwas eleganter wäre:
for %i in (c:\temp\*.*) do (type "%i" & echo\)>>e:\test.txt  
[/Edit]

Grüße
bastla
meandmyself
meandmyself 15.05.2008 um 21:08:41 Uhr
Goto Top
Großartig, vielen Dank!

Das funktioniert prima. Ist es eigentlich möglich, den Inhalt der test.txt bei jedem Aufruf zu löschen oder muss ich die Datei löschen, z.B. per "if exist e:\test.txt del e:\test.txt"?

Beste Grüße
bastla
bastla 15.05.2008 um 21:15:46 Uhr
Goto Top
Hallo meandmyself!

Der saubere Weg wäre der von Dir beschriebene, aber es ginge auch so:
del e:\test.txt 2>nul & for %i in (c:\temp\*.*) do (type "%i" & echo\)>>e:\test.txt  
Damit wird auf jeden Fall versucht, die Zieldatei zu löschen - falls sie nicht vorhanden ist, unterdrückt die Umleitung "2>nul" die ansonsten fällige Fehlermeldung "e:\test.txt konnte nicht gefunden werden".

Grüße
bastla
meandmyself
meandmyself 15.05.2008 um 21:25:46 Uhr
Goto Top
Super, Danke Bastla,

jetzt kann ich ja beruhigt den Feierabend genießen face-smile

Viele Grüße
meandmyself
bastla
bastla 15.05.2008 um 21:29:20 Uhr
Goto Top
Hallo meandmyself!

Bevor Du das tust, hätte ich noch einen Job für Dich: Wie kann ich einen Beitrag als gelöst markieren? face-wink

Grüße
bastla
meandmyself
meandmyself 15.05.2008 um 21:34:21 Uhr
Goto Top
ja, klar. sorry.
Gut´ Nacht!