Ich arbeite an einem kleinen Batch-Programm, und ich habe Probleme mit der Programmierung der Zeit-Scripting, was ich meine, indem ich Menschen in dem Programm in einer bestimmten Zeit erlaubt. Die bestimmte Zeit ist um 12:00 Uhr geöffnet und um 11:00 Uhr geschlossen. Das ist mein Skript so weit:Wie behebe ich dieses Batch-Time-Skript?
@echo off
set current_time=%time:~0,5%
rem This piece of code below is to make it start
if %current_time% == "12:00" goto :START
rem this piece of code below is to make it stop
if %current_time% == "23:00" goto :STOP
rem and if you know batch you'll get these two
if %current_time% lss "12:00" if %current_time% gtr "23:00" goto :STOP
if %current_time% gtr "12:00" if %current_time% lss "23:00" goto :START
:START
echo The program has successfully ran.
echo Press anything to exit now.
pause >nul
exit
:STOP
echo Sorry, but this program is closed. Come back at 12:00 P.M.
pause >nul
exit
Wenn ich den Code versuchen, es einfach ignoriert völlig die Zeit Konfiguration und geht direkt auf die Startprozedur. Weiß jemand, wie man das repariert? Auch BITTE BEACHTEN SIE: Ich verwende Windows 10.
Willkommen als neue Benutzer konstruieren zu SO. Ich weiß nicht, was genau Sie von Ihrem Code erwarten. Wie ich sehe, ist alles ganz normal. Batch kennt nur 2 Variablentypen, String und 32-Bit-Ganzzahlen mit Vorzeichen. Die Anführungszeichen und der Doppelpunkt erzwingen einen Zeichenfolgenvergleich. Wenn Sie möchten, dass der Batch zu einem bestimmten Zeitpunkt pausiert und einen weiteren Vergleich durchführt, müssen Sie eine Schleife erstellen und Ressourcen ein wenig verzögern. Siehe "Hilfe" und "Hilfe Timeout" – LotPings
Ein weiterer Hinweis, gestapelt, wenn die nur wahr sind, wenn beide Bedingungen erfüllt sind, Ihre Zeile goto: Stop kann nie wahr sein, da eine Zahl nicht weniger sein kann 1200 und gtr 2300. Nehmen Sie die anderen wenn und append und else-Klausel. Aber da Sie in beiden Fällen den Batch mit exit verlassen, sind die Schleife und die Verzögerung für Ihre Logik nicht sinnvoll. – LotPings
@LotPings: Dieser Satz: _ "Batch kennt nur 2 Variablentypen: Zeichenfolge und 32-Bit-Ganzzahlen mit Vorzeichen" _ ist nicht ganz genau. Batch-Umgebungsvariablen können nur ** Strings ** enthalten. Bestimmte Befehle, wie 'set/A' und andere, _konvertieren _ die Zeichenfolge in eine 32-Bit-Ganzzahl, bevor sie sie ausführen, und das numerische Ergebnis zurück in eine Zeichenfolge umwandeln, bevor sie in einer Variablen gespeichert wird ... – Aacini