motorcross
Goto Top

Stunden, Minuten, Sekunden Timer programmieren

Hallo Administratoren,

ich wollte mir einen Timer programmieren, der wenn die Zeit abgelaufen ein anderes Programm startet.
Das Programm nennen wir mal test.bat.
Ich habe es jetzt mit Sekunden hinbekommen,aber das sieht ziemilich "blöd" aus wenn da z.B 4000 Sekunden steht.
Deswegen wollte ich das mit Stunden, Minuten und Sekunden machen. Das Problem ist :Ich weiß nicht wie das geht.
Könnte mir jemand helfen?
Gruß Motorcross

Content-ID: 121826

Url: https://administrator.de/contentid/121826

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

kaiand1
kaiand1 02.08.2009 um 11:03:12 Uhr
Goto Top
Es gibt sowas schon vom System her
Nennt sich Cronjob bzw Taks planer unter Windows....
1002-btl
1002-btl 02.08.2009 um 11:03:17 Uhr
Goto Top
Hallo,

mit welcher Programmiersprache arbeitest du denn?

Im Prinzip könntest Du doch einen Parameter der Form hh:mm:ss (string) in ein Array aufplitten (Trennzeichen wäre der ':').
Daraus könntest Du leicht die Sekunden berechnen.

(SekundenTotal=Sekunden+(Minuten*60)+(Stunden*3600))

Oder soll die Berechnung innerhalb der test.bat erfolgen?
Motorcross
Motorcross 02.08.2009 um 11:12:30 Uhr
Goto Top
Hallo,
die Berechnungen sollen innerhalb test.bat erfolgen.
Gruß Motorcross
rubberman
rubberman 02.08.2009 um 12:30:55 Uhr
Goto Top
Vielleicht denke ich zu kompliziert, aber mit PING sollte das bei größeren Zeitspannen zu ungenau werden. In diesem Beispiel wird geprüft, ob sich die Systemzeit geändert hat. Das ergibt zwar am Anfang einen Fehler von max. einer Sekunde, danach sollte das ganze aber genau laufen.
@echo off &setlocal
:: Zeit in Sekunden:
set /a z=4000

set /a x=0
set /a z+=1
set ZeitEins=%time:~0,8%
:loop
set ZeitZwei=%time:~0,8%
if %ZeitEins% == %ZeitZwei% goto loop
set /a x+=1
set ZeitEins=%ZeitZwei%
set /a t=%z%-%x%
set /a h=%t%/3600
set /a Rest=%t%-%h%*3600
set /a m=%Rest%/60
set /a s=%t%-%h%*3600-%m%*60
set "h=0%h%"  
set "m=0%m%"  
set "s=0%s%"  
set "Display=%h:~-2%:%m:~-2%:%s:~-2%"  
cls
echo Countdown: %Display%
if %t% gtr 0 goto loop

:: Hier dein Code:
miniversum
miniversum 02.08.2009 um 12:34:19 Uhr
Goto Top
Du meinst woll was in dieser Form:
@echo off
if %1 gtr 0 FOR /L %h IN (1,1,%1) DO ping -n 3600 localhost >NUL
if %2 gtr 0 FOR /L %m IN (1,1,%2) DO ping -n 60 localhost >NUL
if %3 gtr 0 ping -n %3 localhost >NUL
echo Zeit abgelaufen. Tu jetzt was
Aufgerufen wird das ganze dann:
test.bat 1 30 25
für 1 Stunde 30 minuten und 25 sekunden