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-Key: 87720

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

Printed on: April 20, 2024 at 04:04 o'clock

Mitglied: 60730
60730 May 15, 2008 at 17:54:55 (UTC)
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
Member: bastla
bastla May 15, 2008 at 18:53:02 (UTC)
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
Member: meandmyself
meandmyself May 15, 2008 at 19:08:41 (UTC)
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
Member: bastla
bastla May 15, 2008 at 19:15:46 (UTC)
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
Member: meandmyself
meandmyself May 15, 2008 at 19:25:46 (UTC)
Goto Top
Super, Danke Bastla,

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

Viele Grüße
meandmyself
Member: bastla
bastla May 15, 2008 at 19:29:20 (UTC)
Goto Top
Hallo meandmyself!

Bevor Du das tust, hätte ich noch einen Job für Dich: How can I mark a post as solved? face-wink

Grüße
bastla
Member: meandmyself
meandmyself May 15, 2008 at 19:34:21 (UTC)
Goto Top
ja, klar. sorry.
Gut´ Nacht!