2013-01-11 19 views
7

Sto provando a confrontare il tempo di sistema corrente con un tempo prestabilito. Vedere di seguito:Confronto tempi file batch di Windows

set currentTime=%TIME% 
set flag=false 

if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true 

if %flag%==true (


) else (

) 

Se l'ora è tra le 7:00 e le 22:45, eseguire questa operazione altrimenti eseguire l'altra.

Il problema è che questo non funziona. I risultati variano costantemente. Penso che abbia a che fare con il mio paragone con: 07:00

risposta

9

Il motivo per cui il tuo script ha esito negativo è per il momento prima delle 10.00. Quando il tempo è inferiore a 10, la variabile% Time% restituisce questo formato: " H:MM:SS:ss". Tuttavia, quando 10 o più tardi la variabile %Time% restituisce questo formato: "HH:MM:SS:ss".

Nota Manca lo 0 mancante all'inizio dei tempi prima dello 10. Ciò causa un problema di confronto poiché batch sta eseguendo un confronto tra stringhe e non un confronto numerico.

07:00 è inferiore 6:00 a causa del fatto che il valore ASCII 6 è maggiore del valore ASCII di 0.

La soluzione richiede di aggiungere uno zero all'inizio del tempo se è prima delle 10.00.

Basta cambiare

set currentTime=%TIME% 

Into

set "currentTime=%Time: =0%" 

Questo sostituirà eventuali spazi nel tempo con gli zeri.

+0

Ottimo! Ciò ha senso. Grazie per l'aiuto – Brian

Problemi correlati