Logdatei auswerten und bestimmten Text in Variable speichern
Hallo
Wieder einmal habe ich ein Problem bei einer For-Schleife.
Diesmal möchte ich aus einer bestehenden Logdatei bestimmte Wörter herausfiltern und die komplette Zeile, in der dieses Wort vorkommt, als Variable speichern um diese später verwenden zu können.
Gegeben ist:
@set ERRORCODE=(0x00000002)
@set LOGFILE=%USERPROFILE%\Desktop\Test.log
@set ERRORS=%USERPROFILE%\Desktop\Errors.log
for %%i in ("%LOGFILE%") do findstr /C:"%ERRORCODE%" && echo %%i>>"%ERRORS%"
Leider funktioniert das nicht so ganz.
Wo liegt der Fehler?
Wieder einmal habe ich ein Problem bei einer For-Schleife.
Diesmal möchte ich aus einer bestehenden Logdatei bestimmte Wörter herausfiltern und die komplette Zeile, in der dieses Wort vorkommt, als Variable speichern um diese später verwenden zu können.
Gegeben ist:
@set ERRORCODE=(0x00000002)
@set LOGFILE=%USERPROFILE%\Desktop\Test.log
@set ERRORS=%USERPROFILE%\Desktop\Errors.log
for %%i in ("%LOGFILE%") do findstr /C:"%ERRORCODE%" && echo %%i>>"%ERRORS%"
Leider funktioniert das nicht so ganz.
Wo liegt der Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 09.03.2010 um 14:47:57 Uhr
Leider funktioniert das nicht so ganz.
Ich werde beantragen, diesen Leer-Satz forumsweit zu bannen.Wenn das eine Fehlerbeschreibung von erwachsenem Windows-Anwender zu erwachsenem Windows Anwender ist - wie unterhalten sich schulpflichtige PlayStation-Zockerinnen??
Content-ID: 137795
Url: https://administrator.de/forum/logdatei-auswerten-und-bestimmten-text-in-variable-speichern-137795.html
Ausgedruckt am: 22.05.2025 um 01:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo ForgottenRealm!
Abgesehen davon, dass ich Bibers obigen Antrag aufs Heftigste unterstütze - hast Du es schon mal mit einer "
Außerdem - nach "als Variable speichern" (auch wenn dies für mehrere Zeilen zumeist ohnehin nicht viel Sinn hat) sieht Dein Code nicht aus ...
... und wenn die Zeilen tatsächlich nur in eine Datei sollten, wäre die Schleife entbehrlich:
Grüße
bastla
Abgesehen davon, dass ich Bibers obigen Antrag aufs Heftigste unterstütze - hast Du es schon mal mit einer "
for /f
"-Schleife versucht?Außerdem - nach "als Variable speichern" (auch wenn dies für mehrere Zeilen zumeist ohnehin nicht viel Sinn hat) sieht Dein Code nicht aus ...
... und wenn die Zeilen tatsächlich nur in eine Datei sollten, wäre die Schleife entbehrlich:
findstr /C:"%ERRORCODE%" "%LOGFILE%">"%ERRORS%"
bastla
Hallo ForgottenRealm!
Etwa so:
Wenn die Datei "Errors.log" nicht für andere Zwecke benötigt wird, ließen sich die Zeilen 8 und 9 zu
zusammenfassen ...
Grüße
bastla
P.S.:
Etwa so:
@echo off & setlocal
set "ERRORCODE=(0x00000020)"
set "LOGFILE=Test.log"
set "ERRORS=Errors.log"
set "NICHTKOPIERT=NichtKopiert.log"
del "%NICHTKOPIERT%" 2>nul
findstr /c:"%ERRORCODE%" "%LOGFILE%">"%ERRORS%"
for /f "usebackq delims=" %%i in ("%ERRORS%") do set "Zeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
>>"%NICHTKOPIERT%" echo %Zeile:~71%
goto :eof
for /f "delims=" %%i in ('findstr /c:"%ERRORCODE%" "%LOGFILE%"') do set "Zeile=%%i" & call :ProcessLine
Grüße
bastla
P.S.:
... was darauf hindeutet, dass die Variable %%L nicht erstellt wird.
Tatsächlich werden alle Variablen erstellt, aber da keine "delayedExpansion" (Beispiele und Erklärung mehrfach hier im Forum zu finden) vorgenommen wird, kann auf die Werte der Variablen erst nach dem Abarbeiten der Schleife zugegriffen werden (wo sie in diesem Fall nix mehr nützen) ...