deepeblue
Goto Top

Problem mit findstr

Suche liefert nicht das erwartete Ergebnis

Ich möchte eine Textdatei mit folgendem Text...

"statistik2008.job" (statistik.bat)
Finished 1/28/2008 5:30:01 PM
Result: The task completed with an exit code of (c000013a).
"statistik2008.job" (statistik.bat)
Started 1/28/2008 5:45:00 PM
"statistik2008.job" (statistik.bat)
Finished 1/28/2008 5:45:00 PM
Result: The task completed with an exit code of (0).
"ereignislog.job" (ereignislog.bat)
Started 1/28/2008 5:52:38 PM
"ereignislog.job" (ereignislog.bat)
Finished 1/28/2008 5:52:38 PM
Result: The task completed with an exit code of (ff).

auf die Zeichenkette in Klammern durchsuchen und wenn diese nicht "0" ist in eine Variable schreiben und hochzählen.
Das versuche ich mit folgendem Befehl:
for /f %%x in ('findstr /C "(ff)" c:\temp\test.txt') do (set /a "error=error+1")
Das Ergebnis liefert mir aber nicht den gewünschten Treffer zurück. Wo liegt mein Fehler?

Danke für jegliche Hilfe.

Content-Key: 79386

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

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

Member: Biber
Biber Jan 29, 2008 at 08:27:29 (UTC)
Goto Top
Moin deepeblue,

willkommen im Forum.

Da solltest Du etwas anders herangehen.
Probiere es mal am CMD-Prompt aus - ein besseres Ergebnis erhieltest Du so.
findstr /c:"exit code of (" c:\temp\test.txt  
Result: The task completed with an exit code of (c000013a).
Result: The task completed with an exit code of (0).
Result: The task completed with an exit code of (ff).
(= 9:22:14  D:\temp=)
>findstr /c:"exit code of (" c:\temp\test.txt|find /v /c "(0)"  
2
... also zuerst mit FindStr alle Zeilen mit [exakt] "exit code of (" suchen und danach mit Find alle Zeilen zählen, die NICHT "(0)" enhalten. ( Parameter "/c /v" ).
Denn FindStr.exe kennt keine /c = Count-Funktionalität.
Im Batch dann:
for /f %%x in ('findstr /c:"exit code of (" c:\temp\test.txt^|find /v /c "(0)" ') do set /a  ErrCnt=%%x  

Grüße
Biber
Member: stbewo
stbewo Jan 29, 2008 at 08:40:40 (UTC)
Goto Top
Hi deepeblue,

versuch's mal damit

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "DELIMS==() TOKENS=2" %%i in (c:\temp\test.txt) do if not "%%i"=="0" (
set /a error+=1
echo Anz. Fehler = !error!
) ELSE (
set /a inOrdnung+=1
echo In Ordnung = !inOrdnung!
)


Gruß
Stefan
Member: rubberduck
rubberduck Jan 29, 2008 at 08:41:09 (UTC)
Goto Top
Hi,

Trägst Du das wirklich so

for /f %%x in ('findstr /C "(ff)" c:\temp\test.txt') do (set /a "error=error+1")  

ein?

Was genau bezweckst Du damit?
...do (set /a "error=error+1")  
Erstmal: Streich die Klammern, und schreib DO CALL SET.... Wird sicher besser funktionieren face-wink

[EDIT]
War wohl nix... face-sad
Meine Vorredner haben es wohl besser kapiert, was Du vorhast...
Member: deepeblue
deepeblue Jan 29, 2008 at 14:37:17 (UTC)
Goto Top
Hallo Biber,

mit "for /f %%x in ('findstr /c:"exit code of (" c:\temp\test.txt^|find /v /c "(0)" ') do set /a ErrCnt=%%x" bekomme ich als Ergebnis immer 0.
Ich dreh noch durch...

Weitere Tipps?

Danke
Member: Biber
Biber Jan 29, 2008 at 14:57:15 (UTC)
Goto Top
moin deepeblue,

dafür wird es schon eine verblüffend einfache Erklärung geben.. entweder der Suchstring passt nicht oder die Datei ist nicht da.

Bei mir tut es dieser Testschnipsel (vorhin habe ich es auch nur am CMD-Prompt getestet):
@echo off & setlocal
for /f %%x in ('findstr /c:"exit code of (" c:\temp\test.txt^|find /v /c "(0)" ') do set /a  ErrCnt=%%x  
Echo ErrCnt: [%errCnt%]

Ergebnis mit dem von Dir oben geposteten Text in der c:\temp\test.txt:
>fstest.cmd
ErrCnt: [2]

Wie weit passt es denn, wenn Du die CMD-Prompt-Vortestereien nachkasperst?

Grüße
Biber
Member: deepeblue
deepeblue Jan 29, 2008 at 15:27:40 (UTC)
Goto Top
Ich habs...
Ich muss mein Textfile zuerst mit 'type' in eine andere Datei umleiten, da beim Generieren des Files ein Tab-Zeichen vor dem Suchtext eingefügt wird. Und kaum macht man das, schon geht es wie erwartet.

Vielen Dank an alle!!