Batch file 在IF语句中使用GOTO

Batch file 在IF语句中使用GOTO,batch-file,if-statement,cmd,goto,Batch File,If Statement,Cmd,Goto,我做错了什么?我一直在犯错误- (这在当时是出人意料的 试过这样做- if %_var%==1 ( goto :group1 ) else if %_var%==2 ( goto :group2 ) else ( goto :groupOthr ) 然后我得到- (后藤此时出人意料 刚刚答对了。在这里找到了答案- 正确。在这里找到答案-像这样简化。如果您的“groupOthr”代码就在下面,您可以删除最后一个goto if "%_var%"=="1" (

我做错了什么?我一直在犯错误-

(这在当时是出人意料的

试过这样做-

   if  %_var%==1 (
    goto :group1
) else if  %_var%==2 (
    goto :group2
) else (
    goto :groupOthr
)
然后我得到-

(后藤此时出人意料

刚刚答对了。在这里找到了答案-


正确。在这里找到答案-

像这样简化。如果您的“groupOthr”代码就在下面,您可以删除最后一个goto

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

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

这样简化。如果您的“groupOthr”代码就在下面,您可以删除最后一个goto

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

还要注意,我引用了比较的两面,以避免变量未定义时出现问题。

这是您应该使用的结构

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

这是您应该使用的结构

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

您不需要任何括号,它们在if语句中会导致很多错误。 下面是一个不带括号的工作if语句示例:

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

您不需要任何括号,它们在if语句中会导致很多错误。 下面是一个不带括号的工作if语句示例:

if "%_var%"=="1" (
    goto :group1
) else (
    if "%_var%"=="2" (
        goto :group2
    ) else (
        goto :groupOthr
    )
)
如果%\u var%==1(转到组1)

如果%\u var%==2(转到组2)

转到groupothr

试试看!如果成功了就投票!

如果%\u var%==1(转到group1)

@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
如果%\u var%==2(转到组2)

转到groupothr

试试看!如果有用就投票

@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)
goto groupothr
但是,如果没有定义targeturl(转到err400),它也可以像
一样工作。

此外,我还有一个脚本:

@echo关闭
设置定义i=hi
如果“%defini%”==“hi”(转到tyr)
回声不去。
暂停
出口
:tyr
echo goto成功了!
暂停
出口

其工作原理如下:

@echo关闭
设置定义i=hi
如果“%defini%”==“hi”(转到tyr)
回声不去。
暂停
出口
:tyr
echo goto成功了!
暂停
出口

尝试复制上述代码并将其保存到trygoto.bat,然后运行它

在转到之前放入空格键…也在转到之后尝试一个空格键

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

if %_var%==1 ( goto group1)
if %_var%==2 ( goto group2)
goto groupothr
但是,如果没有定义targeturl(转到err400),它也可以像
一样工作。

此外,我还有一个脚本:

@echo关闭
设置定义i=hi
如果“%defini%”==“hi”(转到tyr)
回声不去。
暂停
出口
:tyr
echo goto成功了!
暂停
出口

其工作原理如下:

@echo关闭
设置定义i=hi
如果“%defini%”==“hi”(转到tyr)
回声不去。
暂停
出口
:tyr
echo goto成功了!
暂停
出口


尝试复制上述代码并将其保存到trygoto.bat中,然后运行它。

括号(或括号)非常好,正确使用时不会导致问题,并且与
else
子句一起是必需的……不,我的意思是如果您没有正确使用它们。我知道您需要在else子句中使用它们,但用户将括号放在如下位置:(gotoThe OP正确地使用了它们(尽管他们的第二次尝试看起来很奇怪,但没有错)…对不起,我说错了。如果你知道我的意思,我想说的是他们是否使用了不正确的结构。因为他们以前的命令,windows认为(是另一个命令的一部分。括号(或括号)非常好,正确使用时不会引起问题,并且与
else
子句一起是强制性的…不,我的意思是如果你没有正确使用它们。我知道你在else子句中需要它们,但用户将括号放在如下位置:(gotoThe OP正确使用它们(尽管他们的第二次尝试看起来很奇怪,但没有错)…很抱歉,我说错了。意思是说如果你知道我的意思,他们是否使用了不正确的结构。由于他们以前的命令,windows认为(是另一个命令的一部分。可能重复的可能重复的)