Fügen Sie Minuten Zeit, in batch (mit Arithmetik)

Ich in einem dilemma. Ich möchte zum senden einer präemptiven E-Mail an Benutzer mitzuteilen, dass eine anstehende Aufgabe ist zu geschehen. Damit zu tun, dass ich bin, definieren einige Variablen, senden Sie eine E-Mail per blat, schlafen die Stapel für 5 Minuten, dann ausführen den rest des Skripts.

Beim ausführen %time% um 4:00 UHR, bekomme ich 16:00:00.00. Wenn ich 5 Minuten, nur zur Anzeige in der E-Mail mit dem folgenden code:

@echo on
SET /a timeminute = 00 + 5 << --- test code
::SET /a timeminute = %time:~3,2% + 5 << --- actual code in GoLive
IF %timeminute% LEQ 9 (
    GOTO :resetTime
) ELSE (
    GOTO :end
)
:resetTime
SET timeminute = "0%timeminute%"

:end
echo %timeminute%
pause

Bekomme ich 5, nicht 05 wie erwartet. Mithilfe von arithmetischen auf Zeit sinkt führenden Nullen, so dass ich versuchen, um es zurück in später, aber später wird innerhalb der IF-Anweisung und nicht gesehen werden kann? Wie kann ich sehen, dass? Gibt es eine solche Sache wie eine environment-variable in batch?

Halten Sie im Verstand dieses Problem passiert nur innerhalb der ersten 9 Minuten der Stunde, nach dieser Zeit, gibt es keine führenden Nullen.

Bonus: Was passiert, wenn die Minuten in einer Stunde 55-59? In meinem Beispiel, wird es 60-64, also brauche ich eine Art der Rundung bis eine Stunde, und kümmern sich um die verbleibenden Minuten an. Jetzt sehe ich, dass da ein bug ist, aber ich nicht voraussehen, dieses script läuft auf diesen ungewöhnlichen Zeiten. Aber wenn es leicht zu beheben, bitte lassen Sie mich wissen, den ich habe nicht einmal versucht, dieses problem angehen.

Vielen Dank

InformationsquelleAutor Richard S | 2012-12-05
Schreibe einen Kommentar