Letzte 10 Zeilen aus Dateien lesen
Ich brauche Hilfe beim verwendeden von foschleifen
Hallo
Ich habe in einem Ordner Logfiles stehen. Von diesen Logfiles möchte ich jeweils die letzten 10 Zeilen in einer Auswertung zusammenfassen. Ich habe mir gedacht dies mit einer verschachtelten forschleife zu tun. In der ersten Schleife zähle ich die Zeilen und in der zweiten Schleife überspringe ich die nicht benötigten Zeilen. Hier habe ich nun aber das Problem, dass meine Variable %zeile_neu% von der skip Funktion nicht erkannt wird. Kann mir jemamand sagen warum nicht?
Gruß
didie08
Hallo
Ich habe in einem Ordner Logfiles stehen. Von diesen Logfiles möchte ich jeweils die letzten 10 Zeilen in einer Auswertung zusammenfassen. Ich habe mir gedacht dies mit einer verschachtelten forschleife zu tun. In der ersten Schleife zähle ich die Zeilen und in der zweiten Schleife überspringe ich die nicht benötigten Zeilen. Hier habe ich nun aber das Problem, dass meine Variable %zeile_neu% von der skip Funktion nicht erkannt wird. Kann mir jemamand sagen warum nicht?
echo on & setlocal EnableDelayedExpansion
rem liste der Logfiles
rem
dir /B D:\wzb-daten-transfer\logs\cz\*.log>templiste1.txt
for /f "tokens=1,* delims= " %%i in (templiste1.txt) do (
set zeilen=0
rem Zeilen zaehlen.
for /f "tokens=* delims= " %%k in (D:\wzb-daten-transfer\logs\cz\%%i) do (
set /a zeilen=!zeilen!+1
echo !zeilen!
)
set /a zeile_neu=!zeilen!-10
echo !zeile_neu!
for /f "tokens=* skip=!zeile_neu! delims= " %%m in (D:\wzb-daten-transfer\logs\cz\%%i) do (
echo %%m>>D:\wzb-daten-transfer\logs\cz\auswertung.log
)
)
Gruß
didie08
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184356
Url: https://administrator.de/forum/letzte-10-zeilen-aus-dateien-lesen-184356.html
Ausgedruckt am: 23.12.2024 um 09:12 Uhr
7 Kommentare
Neuester Kommentar
Aloha,
warum so viel gewurstel, unser lieber bastla hat da mal was hingekritzelt (bzw. eben die dort auch genannte tail.exe nutzen)
greetz André
P.S.: ein einfaches Nutzen von %zeile_neu% sollte das Problem beheben
warum so viel gewurstel, unser lieber bastla hat da mal was hingekritzelt (bzw. eben die dort auch genannte tail.exe nutzen)
greetz André
P.S.: ein einfaches Nutzen von %zeile_neu% sollte das Problem beheben
Hallo didie08!
Ich würde eher so (ungetestet) an die Sache herangehen:
Ganz klar ist mir übrigens Deine erste Schleife (die ich einfach mal übernommen habe) nicht - eigentlich sollte die eher so aussehen:
Übrigens: Sollte es in den Dateien Zeilen mit "!!!!!" geben, einfach eine andere Zeichenfolge, die sicher nicht enthalten ist, in der Zeile 6 des Batches verwenden ...
Grüße
bastla
[Edit] @skye
Das hätte ich vermutlich auch gefunden - aber mal leicht verändert "kritzeln" ist ja auch schön ...
[/Edit]
Ich würde eher so (ungetestet) an die Sache herangehen:
echo on & setlocal
for /f "tokens=1,* delims= " %%i in ('dir /B D:\wzb-daten-transfer\logs\cz\*.log') do call :ProcessFile "D:\wzb-daten-transfer\logs\cz\%%i"
goto :eof
:ProcessFile
for /f "delims=:" %%a in ('find /c /v "!!!!!"<%1') do set "zeilen=%%a"
set /a zeile_neu=zeilen-10
echo %zeile_neu%
more +%zeile_neu% %1>>D:\wzb-daten-transfer\logs\cz\auswertung.log
goto :eof
for /f "delims=" %%i in ('dir /B D:\wzb-daten-transfer\logs\cz\*.log') do call :ProcessFile "D:\wzb-daten-transfer\logs\cz\%%i"
Grüße
bastla
[Edit] @skye
Das hätte ich vermutlich auch gefunden - aber mal leicht verändert "kritzeln" ist ja auch schön ...
[/Edit]
gelöscht, unnötig Zeit verplempert.
Hallo didie08!
Vorschlag: Ersetze, wenn Dir denn schon nach Änderungen ist, meine Zeile 6 durch
(nötig wär's nicht [Edit] wegen des delimiters, aber das "^" fehlte dann doch sehr [/Edit]), belasse dafür den Rest meines Ansatzes so, wie ich ihn geschrieben habe und teste mal damit ...
Grüße
bastla
Vorschlag: Ersetze, wenn Dir denn schon nach Änderungen ist, meine Zeile 6 durch
for /f %%a in ('find /c /v "!!!!!"^<%1') do set "zeilen=%%a"
Grüße
bastla
Aloha,
hmm also
Was'n das?
greetz André
P.S.: Ohne zu escapen
offtopic ... ollidolli er innert mich mehr und mehr an Kaputtnick ...
hmm also
tockens=
greetz André
P.S.: Ohne zu escapen
^
würde da nix mit <
in der Verarbeitungsklammer laufen, da macht dir der Interpreter den H. M. Murdock offtopic ... ollidolli er innert mich mehr und mehr an Kaputtnick ...
gelöscht, unnötig Zeit verplempert
... ja, das war genau seine Art