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

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: SeaStorm
SeaStorm Oct 01, 2018 at 10:47:10 (UTC)
Goto Top
Hi

findstr /C:"name" "test.txt" > out.txt  
Member: Grisu84
Grisu84 Oct 01, 2018 at 11:01:57 (UTC)
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.
Member: Kraemer
Kraemer Oct 01, 2018 at 11:30:33 (UTC)
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/
Member: SeaStorm
SeaStorm Oct 01, 2018 at 11:34:17 (UTC)
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
Member: Grisu84
Grisu84 Oct 01, 2018 at 13:07:07 (UTC)
Goto Top
Mit diesem Befehl bekomme ich leider eine leere txt ausgegeben
Mitglied: 137289
137289 Oct 01, 2018 updated at 13:26:46 (UTC)
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  
Member: Grisu84
Grisu84 Oct 01, 2018 at 15:36:16 (UTC)
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?
Mitglied: 137289
Solution 137289 Oct 01, 2018 updated at 15:45:10 (UTC)
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.
Member: Grisu84
Grisu84 Oct 01, 2018 at 16:41:44 (UTC)
Goto Top
Ja ich weiß, das hier noch Handlungsbedarf bestand kam mir erst später.

Vielen Dank Euch allen.