我可以在批处理文件if
块中使用“或”/“和”指定多个条件吗?
如果不是那么复杂,我至少可以使用类似的东西:
if value1 < value < value2
基本上我的目的是检查当前系统时间是否在某个时间间隔内(确切地说是凌晨2.05和上午7.55),如果确实如此,则执行某些命令。
答案 0 :(得分:17)
添加到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 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
标签当然是任意的,只要它们是唯一的,您就可以选择它们的名称。
答案 1 :(得分:7)
批量中没有逻辑运算符。但AND很容易模仿两个IF语句
if value1 lss value if value lss value2 REM do something
批处理IF语句不知道如何比较时间。批处理IF知道如何比较整数和字符串。
一种选择是将时间转换为午夜后的分钟或秒。
另一个选项是将时间,分钟(如果需要,以及秒)格式化为每个2位数的时间(根据需要为0前缀)。小时应该是24小时格式(军事时间)。
答案 2 :(得分:1)
您可以将条件分解为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