2011-09-01 88 views

回答

12

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 
) 
+0

想法=(。我一直试图用它欺骗它一段时间,但没有运气大声笑 – Mechaflash

+2

你也可以使用这种方法:对于%% a在(一二三)如果“%var% “==”%% a“goto foo – Aacini

0

在游戏后期了一下,但仍然假定如果这可能会帮助任何人绊倒这个问题。我这样做的方法是使用回声的组合通过管道输送到FINDSTR,这种方式:

(echo ":one: :two: :three:" | findstr /i ":%var%:" 1>nul 2>nul) && (
    echo The number is between zero and four 
) 

由于FINDSTR是一个外部命令,我建议不使用此一环,它可以经过反复的1000的内部。如果不是这种情况,这应该解决你试图做的事情,而不是使用多个ifs。另外,在选择“:”时没有什么特别的地方,只需使用一个不太可能成为var变量值的一部分的分隔符。

感谢其他人指出另一个似乎有类似问题的链接,我也会在这里发布这个回复,以防万一有人在这个问题上磕磕绊绊,而且还没有到达这里。