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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 192449
Url: https://administrator.de/contentid/192449
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
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