Windows批处理文件:多个if条件

MxL*_*evs 25 windows-xp batch-file

有没有办法说出类似的话

if %1 == 1 or %1 == 2

在批处理文件中?或者,更好的是,如果我可以指定一组候选值,如

if %1 in [1, 2, 3, 4, ... 20]

小智 25

"和"结果很简单 - 只是没有你期望的语法:这三个例子说明了它.

用词:如果1 == 1 AND 2 == 2那么回声"你好"

if 1==1 echo hello
hello

if 1==1 if 2==2 echo hello
hello

if 1==1 if 2==1 echo hello
(nothing was echoed)
Run Code Online (Sandbox Code Playgroud)


bk1*_*k1e 23

实现逻辑的一种方法 - 或者是使用goto相同标签的多个条件.

if %1 == 1 goto :cond
if %1 == 2 goto :cond
goto :skip
:cond
someCommand
:skip
Run Code Online (Sandbox Code Playgroud)

要测试集合成员资格,可以使用for循环:

for %%i in (1 2 3 4 ... 20) do if %1 == %%i someCommand
Run Code Online (Sandbox Code Playgroud)

注意,这==是字符串相等运算符.equ是数字相等运算符.


bil*_*ill 9

我知道这是旧的,但我只是想让你知道,这确实是可能的,不像之前的帖子所说的那样.基本上你将两个IF命令绑定到一个.

句法: IF equation (cmd if true)else command if false

尝试两个变量(执行IF xx AND xx语句)

set varone=1
set vartwo=2

if %varone% equ 1 (if %vartwo% equ 2 (echo TRUE)else echo FALSE)else echo FALSE
Run Code Online (Sandbox Code Playgroud)

使用一个变量(执行OR语句 - 注意您也可以使用多个变量)

if %a% equ 1 (echo pass)else if %a equ 2 (echo pass)else echo false
Run Code Online (Sandbox Code Playgroud)

您可以使用命令替换Echo pass/fail