我需要将下一个代码(C语言)条件转换为批处理文件:
if(version == 1 || version == 2)
{
// do something
}
else
{
// do something other
}
所以在批处理文件中它看起来像:
if "%version%"==1 (
// do something
)
if "%version%"==2 (
// do something
)
if not "%version%"==1 (
// do something other
)
if not "%version%"==2 (
// do something other
)
有没有更好的方法来写它?
答案 0 :(得分:1)
"没有逻辑和/或你可以使用强大的转到。
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 :)
答案 1 :(得分:1)
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%/&#34 ;;这样,如果版本是1或2,那么该值将被消除,结果将不同于原始值=> version是1或2.需要斜杠以避免错误识别version = 12。
是的,我知道这种方法看起来很复杂,但它比其他选项更简单。试着想象一下,如果你有3个不同的值,那么其他选项应该如何,或者4 ...而且,这个方法可以嵌套在其他IF / FOR命令中,没有任何问题。
答案 2 :(得分:0)
采用与@Aacini的回答相同的哲学的另一种方式
@ECHO OFF
set /p $var=version ? :
set "$version=[1] [2]"
echo %$version% | find "[%$var%]" && echo do something || echo do something else