oggy76
Goto Top

Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben

Hallo zusammen,

meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, aber auch nicht mehr face-wink

Jedenfalls nicht genug um folgende Aufgabe zu lösen:
Ich habe eine TXT-Datei (z.B. Liste.txt) die eine Liste weiteren von TXT-Dateien enthält (jede Zeile beinhaltet den Namen einer TXT-Datei. Wenn gewünscht auch mit Pfad). Nun soll aus jeder TXT-Datei, die in der Liste.txt steht, die zehnte Zeile ausgelesen werden und mit dem Dateinamen zusammen in eine einzige (neue) TXT-Datei geschrieben werden.

Zur Veranschaulichung habe ich mal eine kleine Grafik erstellt.
8e144022f7fd57c350e35ac79d095e3c

Bruchstücke habe ich schon mal per Suche gefunden. Aber nichts was ich mir sinnvoll zusammen basteln konnte.

Über Tips, Anregungen oder eine bat-Datei würde ich mich freuen face-wink

Gruß
Uwe

Content-Key: 273244

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

Ausgedruckt am: 19.03.2024 um 03:03 Uhr

Mitglied: bastla
Lösung bastla 29.05.2015, aktualisiert am 10.06.2015 um 16:40:42 Uhr
Goto Top
Hallo Oggy76 und willkommen im Forum!

Grundsätzlich freuen wir uns immer, wenn wir weiterhelfen können - es also bereits einen Ansatz gibt ...

... anyhow: Soferne die Zeilen 10 keine (besonderen) Sonderzeichen enthalten, etwa so:
@echo off & setlocal
set "Liste=D:\Liste.txt"  
set "Neue=D:\Neue.txt"  
set /a Zeile=10

del "%Neue%" 2>nul  
for /f "usebackq delims=" %%i in ("%Liste%") do for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%%i"^|findstr /b "%Zeile%:"') do >>"%Neue%" echo %%b  
Wenn die in der Listendatei angeführten Dateien nicht im beim Ausführen des Batches aktuellen Ordner liegen, entweder vor der Schleife in den passenden Ordner wechseln (per "cd /d" bzw "pushd" / "popd") oder, wie von Dir als Option genannt, die Dateien mit Pfadangabe in die "Liste.txt" schreiben ...

Grüße
bastla
Mitglied: Oggy76
Oggy76 29.05.2015 um 23:39:21 Uhr
Goto Top
Hallo bastla,

recht herzlichen dank für die schnelle Hilfe.
Das auslesen der zehnten Zeile klappt perfekt. Im Prinzip würde mir nur noch der Dateiname in der jeweiligen Zeile fehlen.

Gruß
Uwe
Mitglied: Endoro
Lösung Endoro 30.05.2015, aktualisiert am 10.06.2015 um 16:40:44 Uhr
Goto Top
Hey,
Das auslesen der zehnten Zeile klappt perfekt. Im Prinzip würde mir nur noch der Dateiname in der jeweiligen Zeile fehlen.
for /f "usebackq delims=" %%i in ("%Liste%") do for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%%i"^|findstr /b "%Zeile%:"') do >>"%Neue%" echo %%b %%~i  
Wenn die zehnte Zeile mit Doppelpunkt(en) begint, werden die durch die Magie von Microsoft verschwinden. This might be fixed if needed...
Gruß, Endoro
Mitglied: bastla
bastla 30.05.2015 aktualisiert um 15:31:00 Uhr
Goto Top
Hallo Oggy76!
Im Prinzip würde mir nur noch der Dateiname in der jeweiligen Zeile fehlen.
Im Prinzip hätte ich gehofft, dass Du diesen Teil selbst bewältigen könntest ...

... und wenn Du die Ausgabe von
for /?
(oder besser das einschlägige Tutorial) liest oder zumindest Deine per Suche gefundenen Bruchstücke analysierst, sollte es Dir möglich sein, den im Ansatz von Endoro ggf samt Pfad ausgegebenen Dateinamen auf die für Dich nötigen Teile (Name + ev Erweiterung) zu kürzen.

Grüße
bastla
Mitglied: Oggy76
Oggy76 30.05.2015 um 13:03:54 Uhr
Goto Top
Hallo bastla, hallo Endoro,

ja hätte ich im Prinzip auch gehofft das ich selbst bewältigen könnte...

Aber Scherzt bei Seite. Danke nochmal für die den neuen Ansatz und Hinweise bzw. Link zum Tutorial. Werde mir jetzt erstmal alles in ruhe ansehen und selbst probieren. Kann mich dann gegebenenfalls ja nochmal melden bzw. meine Lösung bereitstellen.

Viele Grüße
Uwe