2013-01-11 174 views
7

我正試圖將當前系統時間與設定時間進行比較。請參閱下面:Windows批處理文件時間比較

set currentTime=%TIME% 
set flag=false 

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

if %flag%==true (


) else (

) 

如果時間在上午7點到下午10:45之間,則執行此操作,否則執行其他操作。

問題是這是行不通的。結果不斷變化。我認爲它與我的比較有關,即07:00

回答

9

腳本失敗的原因是上午10點之前的時間。當時間小於10時,%Time%變量將返回以下格式:" H:MM:SS:ss"。但是,當10或更高版本的變量%Time%返回此格式時:"HH:MM:SS:ss"

請注意,在缺少10之前的時間的開始處缺少0。這會導致比較問題,因爲批處理正在進行字符串比較而不是數字比較。

07:00小於6:00,因爲6的ASCII值大於0的ASCII值。

該解決方案要求您在早上10點時將零附加到時間的開始處。

只要改變

set currentTime=%TIME% 

進入

set "currentTime=%Time: =0%" 

這將取代任何空格用零的時間。

+0

太棒了!這就說得通了。感謝您的幫助 – Brian