在IF语句中使用GOTO

时间:2016-10-07 14:05:39

标签: batch-file if-statement cmd goto

   if  %_var%==1 (
    goto :group1
) else if  %_var%==2 (
    goto :group2
) else (
    goto :groupOthr
)

我在这里做错了什么?我一直收到错误 -

  

(此时出乎意料。

尝试这样做 -

   if  %_var%==1 (goto :group1
) else if  %_var%==2 (goto :group2
) else (goto :groupOthr
)

然后我得到 -

  

(goto此时出乎意料。

6 个答案:

答案 0 :(得分:2)

if  "%_var%"=="1" (
    goto :group1
) else if  "%_var%"=="2" (
    goto :group2
) else (
    goto :groupOthr
)

说得对。在这里找到答案 - goto unexpected with blank choice

答案 1 :(得分:1)

像这样简化。如果您的“groupOthr”代码直接位于此下方,则可以删除最后一个goto。

if  "%_var%"=="1" goto :group1
if  "%_var%"=="2" goto :group2
goto :groupOthr

另请注意,如果未定义变量,我会引用比较的两边以避免出现问题。

答案 2 :(得分:0)

这是你应该使用的结构。

if "%_var%"=="1" (
    goto :group1
) else (
    if "%_var%"=="2" (
        goto :group2
    ) else (
        goto :groupOthr
    )
)

答案 3 :(得分:0)

你不需要任何括号,它们会在if语句中引起很多错误。 这是一个没有括号的工作if语句的例子:

after

答案 4 :(得分:0)

if %_var%==1 ( goto group1)
if %_var%==2 ( goto group2)
goto groupothr

将空格键放在goto之前......也可以尝试一个......

我看不出我原来的答案是如何起作用的......下面的代码在我的一个批处理文件中,并且工作正常:

if not defined targeturl (goto err400)

但是,它也像if not defined targeturl ( goto err400 )

一样工作

另外,我有一个脚本:

@echo off set defini=hi if "%defini%"=="hi" (goto tyr) echo no go. pause exit :tyr echo goto worked! pause exit

也像:

@echo off set defini=hi if "%defini%"=="hi" ( goto tyr) echo no go. pause exit :tyr echo goto worked! pause exit

尝试复制上面的代码并将其保存到trygoto.bat,并运行它。

答案 5 :(得分:-1)

if%_var%== 1(goto group1)

if%_var%== 2(goto group2)

goto groupothr

试试吧!如果有效的话,请进行投票!