如何在批处理文件中的“If”中使用多个条件?

时间:2012-06-03 05:02:01

标签: if-statement batch-file

我可以在批处理文件if块中使用“或”/“和”指定多个条件吗?

如果不是那么复杂,我至少可以使用类似的东西:

if value1 < value < value2

基本上我的目的是检查当前系统时间是否在某个时间间隔内(确切地说是凌晨2.05和上午7.55),如果确实如此,则执行某些命令。

3 个答案:

答案 0 :(得分:17)

添加到dbenham的答案,您可以使用ifgoto语句的组合来模拟两个逻辑运算符(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