2013-01-11 24 views
7

Geçerli sistem zamanını belirli bir zamana göre karşılaştırmaya çalışıyorum. Lütfen aşağıya bakınız: Zaman sabah 7 ile 10:45 arasındadırWindows Toplu Dosya Zaman Karşılaştırması

set currentTime=%TIME% 
set flag=false 

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

if %flag%==true (


) else (

) 

o zaman bu işlem başka bir şekilde diğer gerçekleştirmek gerçekleştirin.

Sorun, bu işe yaramıyor. Sonuçlar sürekli değişmektedir. Sanırım bu benim karşılaştırmamla ilgili olarak, 07:00

cevap

9

Komut dosyanızın başarısız olmasının nedeni saat 10'dan önce. Süre 10'dan küçük olduğunda,% Time% değişkeni şu biçimi döndürür: " H:MM:SS:ss". Ancak, 10 ya da daha sonra %Time% değişkeni bu biçimi döndürür: "HH:MM:SS:ss".

10 öğesinin eksik olduğu zamanların başlangıcında eksik olan 0 eksik olduğuna dikkat edin. Bu, toplu işlemin bir dizge karşılaştırması yapması ve sayısal bir karşılaştırma yapmaması nedeniyle bir karşılaştırma sorununa neden olur.

07:00 bağlı 6 ASCII değeri 0 ASCII değerinden daha büyük olması daha 6:00 olup.

Çözüm, 10AM'dan önce olduğu zamanın başına bir sıfır eklemenizi gerektirir.

Sadece sıfırlarla zamanında boşluk yerini alacak

set "currentTime=%Time: =0%" 

Bu içine

set currentTime=%TIME% 

değiştirin.

+0

Harika! Bu mantıklı. Yardım için teşekkürler – Brian