在 IF 语句中使用 GOTO

Using GOTO inside an IF statement

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

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

( was unexpected at this time.

尝试这样做 -

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

然后我得到 -

(goto was unexpected at this time.

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

刚刚好。在这里找到答案 - goto unexpected with blank choice

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

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

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

这是您应该一直使用的结构。

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

你不需要任何括号,它们会在 if 语句中导致错误。 这是一个不带括号的有效 if 语句的示例:

@echo off
:Main
cls
echo Press 1 or 2!
choice /c 12 /N >nul
if errorlevel 2
goto :Option2
if errorlevel 1
goto :Option1
:::::::::::::::::::::::::::


:Option2
cls
echo You pressed the number 2!
pause >nul
goto :Main
::::::::::::::::::::::::::::::::::::::


:Option1
cls
echo You pressed the number 1!
pause >nul
goto :Main

if %_var%==1 (goto group1)

if %_var%==2 (goto group2)

转到群组

试试吧!如果有效,请点赞!

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,然后 运行 它。