cmd error: goto was unexpected at this time
cmd error: goto was unexpected at this time
我只是在学习如何在 cmd 中编码,但出于某种原因,那里的教程无法在我的计算机上运行。我正在尝试 运行 以下程序,但它一直在我身上失败。
::My first program
@echo off
:main menu
cls
echo what are you doing?
echo.
echo 1) Nothing :-P
echo 2) dancing
echo.
set /p var="Choose answer:"
if %answer% == 1 goto nothing
if %answer% ==2 goto dancing
:nothing
echo ok...chill
:dancing
echo nice
echo on
您没有%answer%
进行比较,因为您将问题的答案输入var
。将 set /p
更改为使用 answer
set /p answer="Choose answer:"
if %answer% == 1 goto nothing
if %answer% ==2 goto dancing
或更改您的两个 if 语句以使用 var
:
set /p var="Choose answer:"
if %var% == 1 goto nothing
if %var% ==2 goto dancing
试试这个:
这里我设置了 var 用于输入和比较。
: : My first program
@echo off
:main menu
cls
echo .
echo .
echo what are you doing?
echo 1) Nothing :-P
echo 2) dancing
echo .
echo .
echo choose answer:
set /p var=
IF %var%== 1 goto nothing
IF %var%== 2 goto dancing
:nothing
echo ok...chill
:dancing
echo nice
echo on
正如其他人在这里指出的那样,您的问题是您设置了一个名为 var
的变量,然后尝试读取一个名为 answer
的变量。根本的解决办法是选择一个名字并坚持使用。但是,我想提供另外两个建议。
首先,调试批处理文件时,从文件顶部删除行 @echo off
。启用 echo 后,您可以准确地看到出现错误时正在执行哪一行,这将使您更快地找到解决方案。
其次,您的批处理文件终止的原因是语法错误。取消设置 answer
变量后,您的 if
语句计算为
if == 1 goto nothing
这不是有效的批处理语法,这是导致错误 "goto was unexpected at this time" 并导致您的批处理文件终止的原因。 如果用户输入空白字符串,即使在修复了错误变量名的问题后,您的代码仍会出现此错误。要正确处理 IF 语句中的空变量,请在 ==
的每一侧放置方括号或引号,如下所示:
if [%answer%]==[1] goto nothing
这样,即使变量是空字符串,IF 的计算结果也是 if []==[1] goto nothing
,这仍然是一个有效的语句,因此不会使您的脚本崩溃。
::My first program
@echo off
:mainmenu
cls
echo what are you doing?
echo.
echo 1) Nothing :-P
echo 2) dancing
echo.
set /p answer="Choose answer: "
if %answer%==1 goto nothing
if %answer%==2 goto dancing
:nothing
echo ok...chill
pause
goto mainmenu
:dancing
echo nice
pause
goto mainmenu
这应该有效。
我只是在学习如何在 cmd 中编码,但出于某种原因,那里的教程无法在我的计算机上运行。我正在尝试 运行 以下程序,但它一直在我身上失败。
::My first program
@echo off
:main menu
cls
echo what are you doing?
echo.
echo 1) Nothing :-P
echo 2) dancing
echo.
set /p var="Choose answer:"
if %answer% == 1 goto nothing
if %answer% ==2 goto dancing
:nothing
echo ok...chill
:dancing
echo nice
echo on
您没有%answer%
进行比较,因为您将问题的答案输入var
。将 set /p
更改为使用 answer
set /p answer="Choose answer:"
if %answer% == 1 goto nothing
if %answer% ==2 goto dancing
或更改您的两个 if 语句以使用 var
:
set /p var="Choose answer:"
if %var% == 1 goto nothing
if %var% ==2 goto dancing
试试这个: 这里我设置了 var 用于输入和比较。
: : My first program
@echo off
:main menu
cls
echo .
echo .
echo what are you doing?
echo 1) Nothing :-P
echo 2) dancing
echo .
echo .
echo choose answer:
set /p var=
IF %var%== 1 goto nothing
IF %var%== 2 goto dancing
:nothing
echo ok...chill
:dancing
echo nice
echo on
正如其他人在这里指出的那样,您的问题是您设置了一个名为 var
的变量,然后尝试读取一个名为 answer
的变量。根本的解决办法是选择一个名字并坚持使用。但是,我想提供另外两个建议。
首先,调试批处理文件时,从文件顶部删除行 @echo off
。启用 echo 后,您可以准确地看到出现错误时正在执行哪一行,这将使您更快地找到解决方案。
其次,您的批处理文件终止的原因是语法错误。取消设置 answer
变量后,您的 if
语句计算为
if == 1 goto nothing
这不是有效的批处理语法,这是导致错误 "goto was unexpected at this time" 并导致您的批处理文件终止的原因。 如果用户输入空白字符串,即使在修复了错误变量名的问题后,您的代码仍会出现此错误。要正确处理 IF 语句中的空变量,请在 ==
的每一侧放置方括号或引号,如下所示:
if [%answer%]==[1] goto nothing
这样,即使变量是空字符串,IF 的计算结果也是 if []==[1] goto nothing
,这仍然是一个有效的语句,因此不会使您的脚本崩溃。
::My first program
@echo off
:mainmenu
cls
echo what are you doing?
echo.
echo 1) Nothing :-P
echo 2) dancing
echo.
set /p answer="Choose answer: "
if %answer%==1 goto nothing
if %answer%==2 goto dancing
:nothing
echo ok...chill
pause
goto mainmenu
:dancing
echo nice
pause
goto mainmenu
这应该有效。