ole-objekt
Goto Top

Batch: findstr mit Option "weder noch"

Hallo,

ich habe eine batch, mit der ich alle Zeilen, die einem bestimmten Filterkriterium aus einer (bzw. mehreren) Datei(en) entferne. Das funktioniert soweit auch ganz gut.

cd H:\test
for %%f in (.\*) do findstr /b /v /c:"R   " %%f >  %%~nf.txl  
del *.txt
rename *.txl *.txt 

Leider besteht nun die Anforderung, auch Zeilen, die einem anderen Kriterium entsprechen, zu entfernen. Natürlich wäre es möglich, die Dateien jeweils zwei Mal zu bearbeiten, also zwei Schleifendurchläufe vorzunehmen.

cd H:\test
for %%f in (.\*) do findstr /b /v /c:"R   " %%f >  %%~nf.txl  
for %%f in (.\*) do findstr /b /v /c:"Y   " %%f >  %%~nf.txt  
del *.txl

Aber das ist nicht gerade performant und bei großen Datenmengen (ich bewege mich im GB-Bereich) macht sich das wirklich bemerkbar.

Gibt es vielleicht die Möglichkeit, findstr zwei Kriterien mitzugeben? Leider finde ich dazu nirgendwo Beispiele.

Gruß, Olaf

Content-Key: 277641

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

Printed on: April 25, 2024 at 16:04 o'clock

Member: Gersen
Gersen Jul 17, 2015 at 09:21:29 (UTC)
Goto Top
Hallo,

möglich wäre das wohl über reguläre Ausdrücke. Ohne Gewähr:
findstr /b /v /rc:"[RY]   " ...

Gruß,
Gersen
Member: ole-objekt
ole-objekt Jul 17, 2015 at 11:04:57 (UTC)
Goto Top
Schon mal Danke, aber leider muss ich zugeben, dass mein Beispiel nicht ganz korrekt war.

Die beiden Kriterien lauten
"R   "  
"Y LL"  

Und nun komme ich mit regulären Ausdrücken nicht genügend zurecht und befürchte, versehentlich auch
"Y   "  
"R LL"  
zu erfassen.
Member: Gersen
Gersen Jul 17, 2015 updated at 12:18:53 (UTC)
Goto Top
Ah, ok.

Hast Du Dich schon mal mit dem Parameter /G von findstr beschäftigt? - Damit kann man dem Befehl eine Datei mitgeben, in der eine oder mehrere Suchkriterien eingetragen sind (If you want to search for several different items in the same set of files, create a text file that contains each search criterion on a new line.). Kombiniert mit /b und /v könnte Dir das vielleicht weiterhelfen?
Member: bastla
bastla Jul 17, 2015 at 13:22:39 (UTC)
Goto Top
Hallo ole-objekt!

Versuch es so:
for %%f in (*) do findstr /bvc:"R   " /bvc:"Y LL" %%f >%%~nf.txt
Grüße
bastla