8

現在のシステム時刻を設定時刻と比較しようとしています。下記を参照してください:

 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との比較に関係していると思います

4

1 に答える 1

12

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

0前の回の初めの欠落に注意してください10。バッチは数値比較ではなく文字列比較を行っているため、これにより比較の問題が発生します。

07:006:00の ASCII 値が の6ASCII 値より大きいため、は より小さいです0

このソリューションでは、時刻が午前 10 時より前の場合は、時刻の先頭にゼロを追加する必要があります。

変えるだけ

set currentTime=%TIME%

の中へ

set "currentTime=%Time: =0%"

これにより、時間内のスペースがゼロに置き換えられます。

于 2013-01-11T18:34:26.087 に答える