我只是学习如何在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
答案 0 :(得分:1)
您没有%answer%
进行比较,因为您将问题的答案输入var
。将[{1}}更改为使用set /p
answer
或更改您的两个if语句以使用set /p answer="Choose answer:"
if %answer% == 1 goto nothing
if %answer% ==2 goto dancing
:
var
答案 1 :(得分:1)
正如其他人在此指出的那样,您的问题是您设置了一个名为var
的变量,然后尝试读取一个名为answer
的变量。根修复是选择一个名称并坚持下去。但是,我想提供另外两个指针。
首先,在调试批处理文件时,请从文件顶部删除行@echo off
。通过echo,您可以确切地看到在出现错误时正在执行的行,这将使您更快地找到解决方案。
其次,批处理文件终止的原因是语法错误。如果未设置answer
变量,则会将if
语句评估为
if == 1 goto nothing
这不是有效的批处理语法,这是导致错误的原因" goto此时是意外的" ,导致批处理文件终止。 如果用户输入空字符串,您的代码仍会出现此错误,即使在修复了错误的变量名称问题之后也是如此。要在IF语句中正确处理空变量,请在==
的每一侧放置括号或引号,如下所示:
if [%answer%]==[1] goto nothing
这样,即使变量是空字符串,IF也会计算为if []==[1] goto nothing
,这仍然是一个有效的语句,因此不会使您的脚本崩溃。
答案 2 :(得分:0)
::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
这应该有用。
答案 3 :(得分:-2)
试试这个: 这里我为输入和比较设置了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