Uhrzeit in *.dat Datei auslesen und mit aktueller Zeit vergleichen
Uhrzeit soll ausgelesen werden, um diese dann mit der aktuellen Zeit vergleichen. Bei Aweichung >15 Minuten soll Meldung (net send) verschickt werden.
Hallo zusammen,
eine Batch Datei erstellt bei ihrem Aufruf u.a. eine Datei ("last_import.dat") in die nur die aktuelle Uhrzeit und das Datum geschrieben wird, einzeilig ("15:40:11 - 06.02.2006").
Meine Batch Datei soll nun zeitgesteuert prüfen, ob die Abweichung der Uhrzeit aus der Datei größer als 15 Minuten gegenüber der aktuellen Systemzeit beträgt. Ist dies der Fall, soll entweder über net send eine Meldung verschickt oder eine Mail verschickt werden.
Das Auslesen der dat Datei habe ich wie folgt gemacht:
for /F "Tokens=1" %%i in (last_import.dat) do Set Var=%%i
Allerdings wird so komplett "15:40:11" in die Variable geschrieben. Die aktuelle Zeit bekomme ich mit: "%time:~0,5%"
Wie kann ich nun diese Zeiten vergleichen?
ALTERNATIVE:
Könnte mir auch vorstellen, die Uhrzeit der letzten Änderung, die ja sowieso an der Datei gespeichert ist mit der aktuellen Uhrzeit zu vergleichen. Ist das einfacher?
Vielen Dank schon mal für Eure Hilfe.
Gruß
Markus
Hallo zusammen,
eine Batch Datei erstellt bei ihrem Aufruf u.a. eine Datei ("last_import.dat") in die nur die aktuelle Uhrzeit und das Datum geschrieben wird, einzeilig ("15:40:11 - 06.02.2006").
Meine Batch Datei soll nun zeitgesteuert prüfen, ob die Abweichung der Uhrzeit aus der Datei größer als 15 Minuten gegenüber der aktuellen Systemzeit beträgt. Ist dies der Fall, soll entweder über net send eine Meldung verschickt oder eine Mail verschickt werden.
Das Auslesen der dat Datei habe ich wie folgt gemacht:
for /F "Tokens=1" %%i in (last_import.dat) do Set Var=%%i
Allerdings wird so komplett "15:40:11" in die Variable geschrieben. Die aktuelle Zeit bekomme ich mit: "%time:~0,5%"
Wie kann ich nun diese Zeiten vergleichen?
ALTERNATIVE:
Könnte mir auch vorstellen, die Uhrzeit der letzten Änderung, die ja sowieso an der Datei gespeichert ist mit der aktuellen Uhrzeit zu vergleichen. Ist das einfacher?
Vielen Dank schon mal für Eure Hilfe.
Gruß
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25401
Url: https://administrator.de/forum/uhrzeit-in-dat-datei-auslesen-und-mit-aktueller-zeit-vergleichen-25401.html
Ausgedruckt am: 23.04.2025 um 07:04 Uhr
6 Kommentare
Neuester Kommentar
Moin zigges,
würde ich wie folgt skizzieren...
HTH Biber
würde ich wie folgt skizzieren...
::------ snipp CheckOlder15Mins.bat ----------
@echo off & setlocal
Set /a "MaxMins=15"
:: ich gehe über die Dateierstellungszeit, nicht den Inhalt. (Egal/beliebig)
for /F %%i in ('dir /b last_import.dat') do set "DatDate=%%~ti"
:: führt z.B. zum Befehl: "set "DatDate=07.02.2006 13:46"
:: Von diesem Datei-Datum speichern wir den Tag in der Variablen DatTach
:: und die Zeit in der Variablen DatZeit
for /F "tokens=1-2" %%i in ("%DatDate%") do set "DatTach=%%i" & set "DatZeit=%%j"
:: Führt zu:..... set "DatTach=07.02.2006" & set "DatZeit=13:46"
:: Die DatZeit rechne ich in Minuten um:
for /F "delims=: tokens=1-2" %%i in ("%DatZeit%") do set /a "DatMins=%%i*60+%%j"
:: Aufgelöst: set /a "DatMins=13*60+46"
:: Ergebnis: %DatMins%=826
:: Dasselbe für die Zeit jetzt (%time%)
for /F "delims=: tokens=1-2" %%i in ("%time%") do set /a "NowMins=%%i*60+%%j"
:: jetzt ist =17:53:57 --->set /a "NowMins=17*60+53"---->NowMins= 1073
Set /a "DiffMins=%NowMins%-%DatMins"
If %DiffMins% GTR %MaxMins% goto MachWasAuchImmer
IF NOT [%DatTach%]==[%DATE%] if %NowMins% GTR %MaxMins% goto MachWasAuchImmer
:: wenn das Datum nicht "heute" ist und heute schon mehr als 15 Minuten rum sind..
:: dann Mach auch was.. guten Gewissens. Andernfalls "gehe zum Ende"
goto :eof
:MachWasAuchImmer
Echo Datei last_import.dat ist älter als 15 Minuten!
Echo ...weitere Aktionen...blah
::------ snapp CheckOlder15Mins.bat------ **Ungetestete Skizze!**
Moin Markus,
a) die Dateizeit, die ich prüfe, ist das Änderungsdatum (genaugenommen). In Deinem Fall, wenn Du diese einzeilige *.dat-Datei anlegst und nie änderst, ist das natürlich gleich dem Erstellungsdatum.
b) Suche mal über die Forumssuche nach der Blat.exe.
Damit kannst Du per CMD-Prompt/per Batch Mails versenden. Freeware und bedienbar.
HTH Biber
a) die Dateizeit, die ich prüfe, ist das Änderungsdatum (genaugenommen). In Deinem Fall, wenn Du diese einzeilige *.dat-Datei anlegst und nie änderst, ist das natürlich gleich dem Erstellungsdatum.
b) Suche mal über die Forumssuche nach der Blat.exe.
Damit kannst Du per CMD-Prompt/per Batch Mails versenden. Freeware und bedienbar.
HTH Biber
Moin Markus,
sorry..
...ist natürlich Bullshit... %DatZeit% ist die Datei-Uhrzeit...%DATE% ein Datum...
IF NOT [%DatTach%]==[%DATE%] if %NowMins% GTR %MaxMins% goto
...muss es heißen.
Danke für die Rückmeldung. Korrigier ich oben auch.
Gruß Biber
sorry..
IF NOT [%DatZeit%]==[%DATE%] if %NowMins% GTR %MaxMins% goto MachWasAuchImmer
:: wenn das Datum nicht "heute" ist und heute schon mehr als 15 Minuten rum sind..
:: wenn das Datum nicht "heute" ist und heute schon mehr als 15 Minuten rum sind..
...ist natürlich Bullshit... %DatZeit% ist die Datei-Uhrzeit...%DATE% ein Datum...
IF NOT [%DatTach%]==[%DATE%] if %NowMins% GTR %MaxMins% goto
...muss es heißen.
Danke für die Rückmeldung. Korrigier ich oben auch.
Gruß Biber