batch file中的其他条件

我需要将下一个代码(C语言)条件转换为batch file

if(version == 1 || version == 2) { // do something } else { // do something other } 

所以在batch file中,它将如下所示:

 if "%version%"==1 ( // do something ) if "%version%"==2 ( // do something ) if not "%version%"==1 ( // do something other ) if not "%version%"==2 ( // do something other ) 

有没有更好的方法来写它?

Solutions Collecting From Web of "batch file中的其他条件"

“没有逻辑和/或但你可以使用强大的转到。

 if "%version%"=="1" goto :TRUE if "%version%"=="2" goto :TRUE REM do something else echo neither 1 or 2 :( goto :eof :TRUE REM do something echo 1 or 2 :) 
 setlocal EnableDelayedExpansion set wantedVersions=/1/2/ if "!wantedVersions:/%version%/=!" neq "%wantedVersions%" ( echo Version %version% is 1 or 2, do something ) else ( echo Version %version% is NOT 1 or 2, do something other ) 

这个表达式: "!wantedVersions:/%version%/=!" 意思是:“在wantedVersion中消除字符串”/%version%/“;这样如果版本是1或2,那么这个值将会被消除,结果将会与原来的不同=> version是1或2。需要避免版本= 12的错误识别。

是的,我知道这种方法看起来很复杂,但比其他选项更简单。 试着设想一下,如果你有3个不同的值,或者4个,那么其他选项应该是什么样的。另外,这个方法也可以嵌套在其他的IF / FOR命令中,而没有任何问题。

与@Aacini的回答相同的哲学的另一种方式

 @ECHO OFF set /p $var=version ? : set "$version=[1] [2]" echo %$version% | find "[%$var%]" && echo do something || echo do something else