Errorlevels findstr
Hallo,
es sollen je nach return value einer Suche nach einem regulären mit logischen AND verknüpften Ausdruck Zeilen in verschiedenen Ordnern kopiert werden. Wie geht das am einfachsten? Oder geht's anders?
Danke für Eure Tipps
Gruß
dedalus2011
es sollen je nach return value einer Suche nach einem regulären mit logischen AND verknüpften Ausdruck Zeilen in verschiedenen Ordnern kopiert werden. Wie geht das am einfachsten? Oder geht's anders?
set "ABC=Process Start *Process *: *FFF"
set "Error=Process Start *Process.*FFF"
(if 0==0 echo "%Zeile%"|findstr /i /r /c:"%Error%">nul && echo "%Zeile%"|findstr /i /r /c:"%ABC%">nul) && (if %ERRORLEVEL% == 0 >>"%Folder1%" echo. !Zeile!)
(if 0==0 echo "%Zeile%"|findstr /i /r /c:"%Error%">nul && echo "%Zeile%"|findstr /i /r /c:"%ABC%">nul) && if %ERRORLEVEL% == 1 >>"%Error%" echo. !Zeile!
Danke für Eure Tipps
Gruß
dedalus2011
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188020
Url: https://administrator.de/contentid/188020
Ausgedruckt am: 24.11.2024 um 07:11 Uhr
4 Kommentare
Neuester Kommentar
moin dedalus,
aus was für einer Ausgabe nimmst Du denn die Variable Zeile?
Wenn Du die Ausgabe vom Findstr nicht nach nul umleitest, dann brauchst Du auch keine extra Ausgabe Produzieren.
Der Errolevel der Variable Errolevel bleibt auf einer Befehlszeile immer gleich.
Versuche stattdessen (für Erfolgreich) && oder :
ist die Variable Error nun eine Suchzeichenfolge oder eine Datei?
Stark Vereinfacht wird es aber so geschrieben:
Wenn Du die Fehlerausgabe vom Findstr nicht in der Fehlerausgabe haben möchtest, dann leite die Fehlermeldung(en) enweder pro Findstr oder beide geklammert um.
Gruß Phil
aus was für einer Ausgabe nimmst Du denn die Variable Zeile?
Wenn Du die Ausgabe vom Findstr nicht nach nul umleitest, dann brauchst Du auch keine extra Ausgabe Produzieren.
Der Errolevel der Variable Errolevel bleibt auf einer Befehlszeile immer gleich.
Versuche stattdessen (für Erfolgreich) && oder :
if not ERRORLEVEL 1 Befehl
ist die Variable Error nun eine Suchzeichenfolge oder eine Datei?
Stark Vereinfacht wird es aber so geschrieben:
( (echo "%Zeile%"
) |findstr /irc:"%Error%" |findstr /irc:"%ABC%" || <nul >&2 (set /p "=%Zeile%" &echo()
) 1>>"%Folder1%" 2>>"FehlerDatei.txt"
Gruß Phil
moin dedalus,
wenn eine Befehlsverkettung (nächster liest die vorherige Ausgabe als Eingabe) ist wird immer der letzte Befehl den Errorlevel bestimmen. Es ist immer ein AND und kein XOR.
Sowas Ähnliches wie ein XOR und AND (natürlich nur Simuliert) ist dies hier.
Wenn der erste Findstr keine Ausgabe zum weiterreichen hat, dann ist faktisch im zweiten Findstr sowieso keine Positive Ausgabe (nicht gefunden gibt hier Errorlevel größer 0).
Die Handles (1 2 ...) Schreiben dazu noch genau in die Richtige Datei - dafür sind ja schliesslich die Handles da.
Dein XOR (gleiche Resultate [0 0 und 1 1] ist Ergebnis) sähe aber so aus:
Gruß Phil
wenn eine Befehlsverkettung (nächster liest die vorherige Ausgabe als Eingabe) ist wird immer der letzte Befehl den Errorlevel bestimmen. Es ist immer ein AND und kein XOR.
Sowas Ähnliches wie ein XOR und AND (natürlich nur Simuliert) ist dies hier.
Wenn der erste Findstr keine Ausgabe zum weiterreichen hat, dann ist faktisch im zweiten Findstr sowieso keine Positive Ausgabe (nicht gefunden gibt hier Errorlevel größer 0).
Die Handles (1 2 ...) Schreiben dazu noch genau in die Richtige Datei - dafür sind ja schliesslich die Handles da.
(
for %%i in ("1: a b" "2: a c" "3: b c" "4: c c") do @echo %%i|findstr a |findstr b ||>&2 echo %%i
) 1>>Richtig.txt 2>>Fehler.txt
Dein XOR (gleiche Resultate [0 0 und 1 1] ist Ergebnis) sähe aber so aus:
for %%i in ("1: a b" "2: a c" "3: b c" "4: c c") do @echo %%i|findstr /virc:"a" /c:"b" || echo %%i|findstr /c:"a" |findstr /c:"b"
Gruß Phil