有没有办法通过IF语句传递OR?
如:
SET var=two
IF "%var%"=="one" OR "two" OR "three" ECHO The number is between zero and four.
答案 0 :(得分:13)
没有
if "%var%"=="one" goto foo
if "%var%"=="two" goto foo
if "%var%"=="three" goto foo
goto afterfoo
:foo
echo The number is between one and three (technically incorrect, since it includes the end points and thus is not between).
:afterfoo
如果您需要更有条理的方法:
if "%var%"=="one" set OneToThree=1
if "%var%"=="two" set OneToThree=1
if "%var%"=="three" set OneToThree=1
if defined OneToThree (
echo Foo
) else (
rem something
)
答案 1 :(得分:0)
游戏中有点晚了,但是假设这可能有助于任何人绊倒这个问题。我这样做的方法是使用echo piped到findstr的组合,这样:
(echo ":one: :two: :three:" | findstr /i ":%var%:" 1>nul 2>nul) && (
echo The number is between zero and four
)
由于findstr是一个外部命令,我建议不要在一个可能经历1000次迭代的循环中使用它。如果不是这种情况,这应该解决您尝试做的事情,而不是使用多个ifs。此外,选择“:”没有什么特别之处,只需使用一个不太可能成为var变量值的一部分的分隔符。
感谢其他人指向另一个似乎有类似问题的链接,我也会在那里发布这个回复,以防万一有人偶然发现这个问题并且不能到达这里。
答案 2 :(得分:0)
请参见重复的问题IF... OR IF... in a windows batch file,其中@Apostolos提出了以下解决方案
FOR %%a in (item1 item2 ...) DO IF {condition_involving_%%a} {execute_command}
例如
FOR %%a in (1 2) DO IF %var%==%%a ECHO TRUE
在批处理脚本中,我发现这是最直接,最简单的用例。