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

这应该有效。