grisu84
Goto Top

Per Batch bestimmte Zeilen kopieren

Hallo,

ich habe probiert via Batch aus einer txt alle Zeilen die mit "Name" beginnen in eine andere txt zu schreiben:

findstr /c "Name" Test.txt > find1.txt  

das hat im Grunde auch funktioniert. Allerdings schreibt er mir vor jeder Zeile "Text.txt:"

Kann mir jemand sagen, wie ich das umgehe? Er soll mir nur die Zeile 1:1 kopieren, ohne Quelle.

Vielen Dank schon mal im Voraus.

Content-ID: 388205

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

Ausgedruckt am: 23.11.2024 um 18:11 Uhr

SeaStorm
SeaStorm 01.10.2018 um 12:47:10 Uhr
Goto Top
Hi

findstr /C:"name" "test.txt" > out.txt  
Grisu84
Grisu84 01.10.2018 um 13:01:57 Uhr
Goto Top
Hallo SeaStorm,

das funktioniert schon mal sehr gut.

Kann ich die Quelldatei auch mit einem variablen Namen wie *.txt angeben?
Die zu untersuchende Datei hat leider immer einen wechselnden Namen.
Kraemer
Kraemer 01.10.2018 um 13:30:33 Uhr
Goto Top
Zitat von @Grisu84:
Kann ich die Quelldatei auch mit einem variablen Namen wie *.txt angeben?
https://www.windows-commandline.com/findstr-command-examples-regular/
SeaStorm
SeaStorm 01.10.2018 um 13:34:17 Uhr
Goto Top
sicher

(for %%a in (*.txt) do findstr /C:"name" "%%a" > out.txt)  

wenn du mehrere Dateien im Input hast, musst du entweder in jeweils eien neue Datei schreiben oder mit ">> out.txt" jeweils in die Datei anfügen
Grisu84
Grisu84 01.10.2018 um 15:07:07 Uhr
Goto Top
Mit diesem Befehl bekomme ich leider eine leere txt ausgegeben
137289
137289 01.10.2018 aktualisiert um 15:26:46 Uhr
Goto Top
Das > durch >> ersetzen sonst wird die Ausgabe ja immer überschrieben.

Machs so
>"out.txt" (for /f "tokens=1,* delims=:" %%a in ('findstr /ic:"name" "c:\Ordner\*.txt" 2^>nul') do @echo(%%b)  
oder auch mit Powershell so
Select-String 'c:\Ordner\*.txt' -SimpleMatch -Pattern "Name" -Encoding Default | Select -ExpandProperty Line | set-content .\out.txt  
Grisu84
Grisu84 01.10.2018 um 17:36:16 Uhr
Goto Top
Das hat schon super geklappt.
Jetzt hätte ich aber noch eine eitere Ergänzung:

Kann man dass man den Code:
>"out.txt" (for /f "tokens=1,* delims=:" %%a in ('findstr /ic:"name" "c:\Ordner\*.txt" 2^>nul') do @echo(%%b)  

so ergänzt, das zwar „Name“ enthalten sein muss aber gleichzeitig „Muster“ nicht enthalten sein darf?
137289
Lösung 137289 01.10.2018 aktualisiert um 17:45:10 Uhr
Goto Top
Zitat von @Grisu84:
Jetzt hätte ich aber noch eine eitere Ergänzung:
Igittigitt ...
Kann man dass man den Code:
>"out.txt" (for /f "tokens=1,* delims=:" %%a in ('findstr /ic:"name" "c:\Ordner\*.txt" 2^>nul') do @echo(%%b)  

so ergänzt, das zwar „Name“ enthalten sein muss aber gleichzeitig „Muster“ nicht enthalten sein darf?
Warum nicht gleich so oben in die Frage schreiben??
Einfach mal findstr /? in die Konsole eingeben ....
>"out.txt" (for /f "tokens=1,* delims=:" %%a in ('findstr /ic:"name" "c:\Ordner\*.txt" 2^>nul ^| findstr /ivc:"Muster" 2^>nul') do @echo(%%b)  

/V Gibt Zeilen aus, die die Zeichenfolge nicht enthalten.
Grisu84
Grisu84 01.10.2018 um 18:41:44 Uhr
Goto Top
Ja ich weiß, das hier noch Handlungsbedarf bestand kam mir erst später.

Vielen Dank Euch allen.