Zeitangabe mit aktueller Angabe vergleichen
Hallo,
ich suche eine möglichst einfache Lösung, wie ich ein Zeitformat in einer Textdatei mit der aktuellen Zeit vergleichen kann, etwa so:
Wenn 04:10:19 länger her ist wie 30 sekunden von der aktuellen Zeit, dann gehe zu "zu lang", ansonsten "noch im Rahmen".
Das hier ist ein Auszug aus einer Beispieldatei:
142:16-08-31 04:10:19 Hiersteht ein Text unbekannter Länge
Und ich möchte eben diese 04:10:19 vergleichen mit der aktuellen Zeit und wenn die aktuelle Zeit später als 04:10:49 beträgt, dann soll zum Programmteilcode "zu lang" gehen und ansonsten zum code "noch im Rahmen".
Hoffe, ich hab mich verständlich ausgedrückt
LG
Peter
ich suche eine möglichst einfache Lösung, wie ich ein Zeitformat in einer Textdatei mit der aktuellen Zeit vergleichen kann, etwa so:
Wenn 04:10:19 länger her ist wie 30 sekunden von der aktuellen Zeit, dann gehe zu "zu lang", ansonsten "noch im Rahmen".
Das hier ist ein Auszug aus einer Beispieldatei:
142:16-08-31 04:10:19 Hiersteht ein Text unbekannter Länge
Und ich möchte eben diese 04:10:19 vergleichen mit der aktuellen Zeit und wenn die aktuelle Zeit später als 04:10:49 beträgt, dann soll zum Programmteilcode "zu lang" gehen und ansonsten zum code "noch im Rahmen".
Hoffe, ich hab mich verständlich ausgedrückt
LG
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 314053
Url: https://administrator.de/forum/zeitangabe-mit-aktueller-angabe-vergleichen-314053.html
Ausgedruckt am: 18.04.2025 um 08:04 Uhr
14 Kommentare
Neuester Kommentar

powershell -Executionpolicy ByPass -Command "[datetime]::ParseExact('04:10:19','HH:mm:ss',[cultureinfo]::CurrentCulture).AddSeconds(30) -lt (get-date)"
Place your variable where the static time is placed.
Put a for loop around to capture the output, finished.
Regards

set "yourtime=10:30:00"
for /f "delims=" %%a in ('powershell -Executionpolicy ByPass -Command "write-host ([datetime]::ParseExact('%yourtime%','HH:mm:ss',[cultureinfo]::CurrentCulture).AddSeconds(30) -lt (get-date))"') do set result=%%a
if /i "%result%" == "True" (
echo More than 30s
) else (
echo Less than 30s
)

Oh man, i don't know how your file looks like, so i cannot make an expample, so loop throuph your file, extract your time to a variable and set this variable to youtime.
I now showed you so much for loops
Turn on your brain man.
I now showed you so much for loops
Turn on your brain man.
Moin Peter32,
ich sach ma' so:
Es lesen ja offensichtlich einige mit in diesem Thread und die meisten davon waren bestimmt genauso gespannt auf highloads Antwort wie ich.
Und vermutlich hätten fast alle nicht so höflich geantwortet.
Um konstruktiv zu bleiben:
- es ging aus deiner Eröffnungsfrage nicht hervor, dass du eigentlich noch gar nix in der Hand hast. Auch ich habe erwartet, es ginge nur noch um den Vergleich einer Zeitangabe mit der aktuellen Zeit.
- irgendwie hast du doch aber in deiner Datei die relevante Zeile gefunden. Der Ausgabe nach ja mit find/findstr. Dann müsstest du doch im Gegensatz zu uns wissen, wonach du gesucht hast.
- und eine bestimmte Spalte fieselst du als soundsovieltes Token in einer FOR / F-Anweisung raus.
Beispiele dazu findest du hier im Forum in Beiträgen, die fast so alt sind wie du, aber auch aktuellen Fragen von dir aus diesem Jahr.
Solltest du wissen, wenn du die Antworten liest und nicht nur Lösungen copy&pastest.
Grüße
Biber
ich sach ma' so:
Es lesen ja offensichtlich einige mit in diesem Thread und die meisten davon waren bestimmt genauso gespannt auf highloads Antwort wie ich.
Und vermutlich hätten fast alle nicht so höflich geantwortet.
Um konstruktiv zu bleiben:
- es ging aus deiner Eröffnungsfrage nicht hervor, dass du eigentlich noch gar nix in der Hand hast. Auch ich habe erwartet, es ginge nur noch um den Vergleich einer Zeitangabe mit der aktuellen Zeit.
- irgendwie hast du doch aber in deiner Datei die relevante Zeile gefunden. Der Ausgabe nach ja mit find/findstr. Dann müsstest du doch im Gegensatz zu uns wissen, wonach du gesucht hast.
- und eine bestimmte Spalte fieselst du als soundsovieltes Token in einer FOR / F-Anweisung raus.
Beispiele dazu findest du hier im Forum in Beiträgen, die fast so alt sind wie du, aber auch aktuellen Fragen von dir aus diesem Jahr.
Solltest du wissen, wenn du die Antworten liest und nicht nur Lösungen copy&pastest.
Grüße
Biber

Here it works...

ut my programm is checking it at 00:00:50 (so 50 seconds after new day began)?
Tha's normal because if you don't add a date to the time it uses the current day as the date part.is it possible to add a date also?
Sure you can add it to the above parseexact method:[datetime]::ParseExact('%yourdate% %yourtime%','yyyy-MM-dd HH:mm:ss',[cultureinfo]::CurrentCulture).AddSeconds(30)

You have learned nothing ...
X) FOR-LOOP
X) FOR-LOOP
echo off & setlocal ENABLEDELAYEDEXPANSION
for /f "usebackq tokens=1,2 delims= " %%i in ("C:\file.txt") do (
set "datetime=%%i %%j"
for /f "delims=" %%a in ('powershell -Executionpolicy ByPass -Command "write-host ([datetime]::ParseExact('!datetime!','yy-MM-dd HH:mm:ss',[cultureinfo]::CurrentCulture).AddSeconds(30) -lt (get-date))"') do set result=%%a
if /i "!result!" == "True" (
echo More than 30s
) else (
echo Less than 30s
)
)