kugman
Goto Top

logdatei vom Ende her abfragen

ich möchte nur die letzten 100 Zeilen einer Logdatei nach einem String (z.Bsp. Fehlermeldung) durchsuchen

Hallo zusammen,

ich habe ein dickes Startskript in meinem Netzwerk. Die Ausgabe des Skripts wird per Umleitung direkt nach c:\pc-update.log auf dem jeweiligen Rechner geschrieben und an das bereits vorhandene log angehängt.

Im Skript werden per xcopy einige Dateien auf den Rechner kopiert. Den Fall, dass er eine Datei nicht kopieren konnte möchte ich abfragen, indem ich irgendwie in der art:

*schnipsel*
net view >netz.txt
FOR /F "tokens=1,2* delims=\ " %%I in (netz.txt) do findstr /C:"0 Datei(en) kopiert." \\%%I%%J\c$\pc-update.log>>%%I%%J.txt  

eine Fehlerdatei pro Rechner mit dem Problem erstelle.

Allerdings hab ich da genau 1 Problem:
Da ich nicht auf die history in der pc-update.log verzichten will, möchte ich nur den Teil der pc-update.log auswerten, der als letztes dazugekommen ist.
Also ich möchte von der Logik her meinen Findstring nur über die letzten 100 Zeilen meines Logfiles machen.

machbar?

Vielen Dank schonmal

Content-ID: 40706

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

Ausgedruckt am: 05.11.2024 um 08:11 Uhr

AxelHahn
AxelHahn 22.09.2006 um 14:30:30 Uhr
Goto Top
Hallo,

das klingt ganz nach

tail -100 [Dateiname]

Das Tool findest du bei cygwin, vielleicht im RessourceKit oder http://unxutils.sourceforge.net/


Viele Grüsse
-= Axel =-
Biber
Biber 22.09.2006 um 16:01:05 Uhr
Goto Top
Moin kugman,

solltest Du aus irgendwelchen Gründen keine tail-Tools nutzen wollen oder dürfen, dann so ändern:
::---snipp  FindInLast100lines.bat
@echo off & setlocal
FOR /F "tokens=1,2* delims=\ " %%I in ('net view') do call: lookupLast100 \\%%I%%J\c$\pc-update.log  
goto :eof
:lookupLast100 Para1=pc-update-log-Location Para2=~rechner~.txt
for /f "tokens=3" %%i in ('find /v /c "$§$" "%~s1"') do @set /a last100=%%~i-100  
If %last100% LSS 1 set last100=1
@more /e +%last100% "%~1" |findstr /C:" 0 Datei(en) kopiert.">>%2  
goto :eof

Gruß
Biber
P.S. Inhaltlicher Änderungsvorschlag:
Nur etwas schreiben, wenn der Suchstring " 0 Datei(en) kopiert." auch gefunden wurde.
...
(more /e +%last100% "%~1" |findstr /C:" 0 Datei(en) kopiert.">nul) && echo %date% Kopierfehler!>>%2  
...