CMD - ein einfacher Ticker

Es ist nicht einfach die Zeit in der Dos-Box abzufangen, weil der Aufruf mit %Time% und %Date% ja leider keinen Zahlenwert sondern einen String liefert. Wenn man aber die Zeiten nicht zu 100% genau braucht, dann kann man sich mit einer einfachen Routine behelfen. Diese Routine die ich hier zeige kann bestimmt noch verfeinert werden.

 

Auf den Abgleich mit der internen Uhr verzichte ich einfach :D.

Die Laufzeit Ergebnisse müssen angepasst werden, da die Auslastung des Rechners starken Einfluss auf die Laufgenauigkeit hat.

 

Dieses Beispiel läuft auf einen ca. 1 minütigen Takt und ruft eine Audiodatei auf zu dem wird die Uhrzeit in einer Datei geschrieben.

In der Datei kann man dann die Abweichungen in der Ausführung einsehen und im Code nach justieren.

 

Bei einem 3 Stündigen Testlauf betrug die Abweichung ca. 1 Minute. Kann aber je nach Auslastung des Rechners abweichen.

 

[CODE]


@echo off
setlocal
::Erstellt 09:03 17.12.2009
::
::Endlosschleife beenden durch [strg]+c
::
::Ablauf Simuliert ca 1 Minute Laufzeit
::und schreibt Zwischenergebnis in eine Datei
::
title ca. Minuten Takt
:: W1 ca 1 Minute
set /a w1=1
::Zähl-Variablen zw ist das Ergebnis  
set /a w2=1
set /a zw=1

::Startzeit in Datei schreiben
echo.Start : %time%>>min.txt
:derStart
cls
:: Zähler liefert eine fortlaufende ansteigend Zahl
set /a zw=%zw%+%w2%
::echo. %zw%

:: Durchlauf abfrage und in Datei schreiben
if %w1% GEQ 10000 echo.Zahlenwert : %zw%>>min.txt
if %w1% GEQ 10000 echo.ca 1 Minute : %time%>>min.txt
if %w1% GEQ 10000 start pip1.ogg
if %w1% GEQ 10000 set /a w1=1

::Hochzählen
set /a w1=%w1%+1
echo. %w1%
goto derStart


Die Variablen zw und w2 können entfernt oder Zeilenweise auskommentiert werden und sind nicht von bedeutung, Sie liefern nur eine Zahl die ohne ende hochgezählt wird.

 

Das einzig interessante passiert bei der Variablen w1  und in den If-abfragen.

 

1.) IF-Abfrage schreibt die endlos hochgezählte Variable zw in die Datei. (kann wie zw und w2 entfernt werden)

 

2,) IF-Abfrage gibt einen Zeitstempel in die Datei wenn w1 den wert 10.000 oder größer erreicht hat.

 

3.) IF-Abfrage Ruft den Pip-ton über Start auf, wenn w1 den wert 10.000 oder größer erreicht hat.

 

4.) IF-Abfrage setzt die Variable w1 wieder auf 1 zurück und der Zählvorgang beginnt von vorne.

 

In der Zeile set /a w1=%w1%+1 wird ohne Unterbrechung hochgezählt.

 

Ausdruck GEQ - Größer als oder Gleich wie die Variable

if w1 [Größer als / oder Gleich] 10.000 wenn ja. dann mache wa.

 

mehr Infos über IF findest du in der Dos-Box mit IF/?