2013-01-11 38 views
7

Próbuję porównać bieżący czas systemowy z ustawionym czasem. Proszę zobaczyć poniżej:Porównanie czasu plików wsadowych systemu Windows

set currentTime=%TIME% 
set flag=false 

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

if %flag%==true (


) else (

) 

Jeśli czas jest między 7 rano a 22:45, należy wykonać tę czynność, w przeciwnym razie wykonać drugą.

Problem polega na tym, że to nie działa. Wyniki ciągle się różnią. Myślę, że ma to związek z moim porównaniem do np. 07:00

Odpowiedz

9

Przyczyną niepowodzenia skryptu jest czas przed 10 rano. Gdy czas jest mniejszy niż 10, zmienna% Time% zwraca ten format: " H:MM:SS:ss". Jednak, gdy 10 lub później zmienna %Time% zwraca ten format: "HH:MM:SS:ss".

Uwaga brakuje brakującego 0 na początku czasów sprzed 10. Powoduje to problem porównania, ponieważ partia wykonuje porównanie ciągów, a nie porównania numeryczne.

07:00 jest mniejsza niż 6:00 ze względu na fakt, że wartość ASCII 6 jest większa niż wartość ASCII 0.

Rozwiązanie wymaga dołączenia zera do początku czasu, jeśli jest przed 10AM.

Wystarczy zmienić

set currentTime=%TIME% 

Do

set "currentTime=%Time: =0%" 

Spowoduje to zastąpienie spacji w czasie z zerami.

+0

Świetnie! To ma sens. Dziękuję za pomoc – Brian

Powiązane problemy