Datum und Zeit auslesen und vergleichen per batch
Hallo zusammen,
Ich habe folgende Logs:
09.10.2012 , 9:45:58,16 : PC startet
09.10.2012 , 10:45:09,12 : PC lädt logs.sys
09.10.2012 , 22:12:45,35 : PC wird heruntergefahren
Alle Logeinträge (1 Eintrag pro Zeile) sollen nach dem Datum und der Zeit geprüft werden.
Danach soll das aktuelle Datum und die aktuelle Zeit ausgelesen werden.
Alle Einträge, die nach dem aktuellen Datum und der aktuellen Zeit sind, sollen angezeigt werden.
Die Logs varieren, weshalb ich nicht die Logs einfach auslesen kann.
Danke im Vorraus.
Alme123
Ich habe folgende Logs:
09.10.2012 , 9:45:58,16 : PC startet
09.10.2012 , 10:45:09,12 : PC lädt logs.sys
09.10.2012 , 22:12:45,35 : PC wird heruntergefahren
Alle Logeinträge (1 Eintrag pro Zeile) sollen nach dem Datum und der Zeit geprüft werden.
Danach soll das aktuelle Datum und die aktuelle Zeit ausgelesen werden.
Alle Einträge, die nach dem aktuellen Datum und der aktuellen Zeit sind, sollen angezeigt werden.
Die Logs varieren, weshalb ich nicht die Logs einfach auslesen kann.
Danke im Vorraus.
Alme123
Please also mark the comments that contributed to the solution of the article
Content-ID: 192449
Url: https://administrator.de/contentid/192449
Printed on: October 9, 2024 at 12:10 o'clock
3 Comments
Latest comment
moin,
das sieht aber grausam aus....
Geht das nicht hybscher?
Wenn du wissen willst, wie - such des Bibers Tut zum Thema batch datum
Dann überlegst du, ob du mit größer kleiner (eher nein) oder mit findstr (n) und more was zimmerst.
Bei Gegenfragen gerne mehr, aber so ist das langweiliges vorkauen von bereits durchgekautem.
Gruß
das sieht aber grausam aus....
Tag.Monat.Jahr leerzeichen komma leerzeichen Stunde:Minute:sekunde,millisek leerzeichen Doppelpunkt leerzeichen Art
Geht das nicht hybscher?
Wenn du wissen willst, wie - such des Bibers Tut zum Thema batch datum
Dann überlegst du, ob du mit größer kleiner (eher nein) oder mit findstr (n) und more was zimmerst.
Bei Gegenfragen gerne mehr, aber so ist das langweiliges vorkauen von bereits durchgekautem.
Gruß
moin Alme,
ich hab das mal überflogen. Ein Log ist ja immer etwas dokumentiertes - also schon vergangen. Es kann so eine Aktuelle Zeit in einem Log nie gefunden werden.
Wenn @60730 wieder die @echo off-Keule rauskramt ...
Die paar Zeilen sollen was machen?
For bietet Dir an, direkt Zeile für Zeile einer Datei abzuarbeiten. Dafür ist hier ein For-Tutorial.
In einer Sub brauchst Du nicht unbedingt enabledelayedexpansion. Bei der Berechnung mit Numerischen Variablen brauchst Du Enabledelayedexpansion schon mal überhaupt nicht, weil die Variablen nur mit den Namen (ohne ! und %) angesprochen werden. Ist auch ein Tutorial für Batch Variablen hier zu finden.
Du musst nur die Zeitinfo.cmd aus dem von @60730 aufgezeigten @Biber Tutorial benutzen um die Variablen JJ MM TT zum größer; kleiner Vergleich zu nutzen. Die Zeit kannnst Du so nicht vergleichen, da zB. 9:45 größer als 10:00 ist.
Da das Führende Zeichen (0 oder [Leerzeichen]) zum vergleichen nicht da ist musst Du dies hinzufügen - sprich einen Extra-Vergleich ob Stunde kleiner 10 dann mit führendem fehlenden (Leer-)Zeichen die Ausgabe der Datei mit der Uhrzeit Vergleichen:
mit Anführungszeichen sieht es nicht so extrem aus.
Gruß Phil
ich hab das mal überflogen. Ein Log ist ja immer etwas dokumentiertes - also schon vergangen. Es kann so eine Aktuelle Zeit in einem Log nie gefunden werden.
Wenn @60730 wieder die @echo off-Keule rauskramt ...
Die paar Zeilen sollen was machen?
For bietet Dir an, direkt Zeile für Zeile einer Datei abzuarbeiten. Dafür ist hier ein For-Tutorial.
In einer Sub brauchst Du nicht unbedingt enabledelayedexpansion. Bei der Berechnung mit Numerischen Variablen brauchst Du Enabledelayedexpansion schon mal überhaupt nicht, weil die Variablen nur mit den Namen (ohne ! und %) angesprochen werden. Ist auch ein Tutorial für Batch Variablen hier zu finden.
Du musst nur die Zeitinfo.cmd aus dem von @60730 aufgezeigten @Biber Tutorial benutzen um die Variablen JJ MM TT zum größer; kleiner Vergleich zu nutzen. Die Zeit kannnst Du so nicht vergleichen, da zB. 9:45 größer als 10:00 ist.
Da das Führende Zeichen (0 oder [Leerzeichen]) zum vergleichen nicht da ist musst Du dies hinzufügen - sprich einen Extra-Vergleich ob Stunde kleiner 10 dann mit führendem fehlenden (Leer-)Zeichen die Ausgabe der Datei mit der Uhrzeit Vergleichen:
if %HH% leq 9 (
if %JJ%%MM%%TT%^ %Uhrzeitstr:,=^,% gtr %date:~-4%%date:~-7,-5%%date:~-10,-8%^%time:,=^,% echo Zeit ist groesser
) else if %JJ%%MM%%TT%%Uhrzeitstr:,=^,% gtr %date:~-4%%date:~-7,-5%%date:~-10,-8%^%time:,=^,% echo Zeit ist groesser
Gruß Phil