if
バッチファイルブロックで「or」/「and」を使用して複数の条件を指定できますか?
それほど複雑ではない場合、少なくとも次のようなものを使用できますか?
if value1 < value < value2
基本的に私の目的は、現在のシステム時刻が特定の間隔(正確には2.05AMと7.55AM)にあるかどうかを確認し、該当する場合は特定のコマンドを実行することです。
if
バッチファイルブロックで「or」/「and」を使用して複数の条件を指定できますか?
それほど複雑ではない場合、少なくとも次のようなものを使用できますか?
if value1 < value < value2
基本的に私の目的は、現在のシステム時刻が特定の間隔(正確には2.05AMと7.55AM)にあるかどうかを確認し、該当する場合は特定のコマンドを実行することです。
dbenham の回答に加えて、if
andgoto
ステートメントの組み合わせを使用して、両方の論理演算子 (AND、OR) をエミュレートできます。
condition1 AND codition2をテストするには:
if <condition1> if <condition2> goto ResultTrue
:ResultFalse
REM do something for a false result
goto Done
:ResultTrue
REM do something for a true result
:Done
condition1 OR codition2をテストするには:
if <condition1> goto ResultTrue
if <condition2> goto ResultTrue
:ResultFalse
REM do something for a false result
goto Done
:ResultTrue
REM do something for a true result
:Done
もちろん、ラベルは任意であり、一意である限り名前を選択できます。
バッチには論理演算子はありません。ただし、AND は 2 つの IF ステートメントで簡単に模倣できます。
if value1 lss value if value lss value2 REM do something
バッチ IF ステートメントは時間を比較する方法を知りません。バッチ IF は、整数と文字列を比較する方法を知っています。
1 つのオプションは、時刻を午前 0 時を過ぎた分または秒に変換することです。
もう 1 つのオプションは、時間、分 (および必要に応じて秒) の両方で時刻をフォーマットし、それぞれ 2 桁の幅 (必要に応じて 0 を前に付けます) にすることです。時間は 24 時間形式 (軍事時間) である必要があります。
条件を 2 つに分割し、if と if を使用して 2 つの条件を設定できます
if %value% GTR %value1% (
echo Value is greater that %value1% ) else call :Error
if %value% LSS %value2% (
echo Value is less than %value2% ) else call :Error
::Write your Command if value lie under specified range
exit
:Error
echo Value doesn't lie in the range
::Write your command for if value doesn't lie in the range
exit