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