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-ID: 277641

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

Gersen
Gersen 17.07.2015 um 11:21:29 Uhr
Goto Top
Hallo,

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

Gruß,
Gersen
ole-objekt
ole-objekt 17.07.2015 um 13:04:57 Uhr
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.
Gersen
Gersen 17.07.2015 aktualisiert um 14:18:53 Uhr
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?
bastla
bastla 17.07.2015 um 15:22:39 Uhr
Goto Top
Hallo ole-objekt!

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