2013-01-11 38 views
7

現在のシステム時刻と設定時刻を比較しようとしています。以下を参照してください:時間は午前7時から午後10時45との間にあるWindowsのバッチファイルの時間の比較

set currentTime=%TIME% 
set flag=false 

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

if %flag%==true (


) else (

) 

場合、このアクションは、そうでない場合は、他のを実行する実行。

これは問題ではありません。結果は絶えず変化します。 07:00

答えて

9

あなたのスクリプトが失敗した理由は、午前10時より前の時間です。時間が10未満の場合、%Time%変数は" H:MM:SS:ss"という形式を返します。ただし、10以降の場合、%Time%変数はこの形式を返します。"HH:MM:SS:ss"

0は、10が見つからない前に時代の幕開けになっています。バッチは数値比較ではなく文字列比較を行っているので、これは比較の問題を引き起こします。

07:006のASCII値が0のASCII値よりも大きいという事実による未満6:00です。

解決策は、10AMより前であれば時間の先頭に0を追加する必要があります。

ちょうどゼロでの時間には、スペースを置き換えます

set "currentTime=%Time: =0%" 

この中に、

set currentTime=%TIME% 

を変更します。

+0

素晴らしい!それは理にかなっている。お手伝いありがとう – Brian