我可以在批处理文件if
块中使用“或”/“和”指定多个条件吗?
如果不是那么复杂,我至少可以使用类似的东西:
if value1 < value < value2
基本上我的目的是检查当前系统时间是否在某个时间间隔内(准确地说是 2.05 AM 和 7.55 AM),如果是,则执行某些命令。
我可以在批处理文件if
块中使用“或”/“和”指定多个条件吗?
如果不是那么复杂,我至少可以使用类似的东西:
if value1 < value < value2
基本上我的目的是检查当前系统时间是否在某个时间间隔内(准确地说是 2.05 AM 和 7.55 AM),如果是,则执行某些命令。
添加到 dbenham 的答案中,您可以使用if
和goto
语句的组合来模拟两个逻辑运算符(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 code2:
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 很容易用两个 IF 语句来模仿
if value1 lss value if value lss value2 REM do something
批处理 IF 语句不知道如何比较时间。Batch IF 知道如何比较整数和字符串。
一种选择是将时间转换为午夜过后的分钟或秒。
另一个选项是用小时、分钟(和秒,如果需要)来格式化时间,每个都是 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