批处理:简单语法错误:此时Goto意外

时间:2013-10-10 23:58:52

标签: batch-file cmd goto

所以我正在尝试编写一个基本的计算机程序。我在使用一些语法时遇到了一些麻烦。代码如下。

@echo off
cls
color 71
:start
echo        -----------------------------------
echo        Welcome to Tandy's Calculator! v0.1
echo        -----------------------------------
echo           Enter your first number below
echo Type "help" to see the list of available commands
echo        -----------------------------------
set /p "_input1=Please Enter The First Number or Command:"
cls
goto subroutine

:subroutine
:: the below line gives me the "goto was unexpected at this time" error
if /i "%_input1%"=="help" goto help1
if /i "%_input1%"=="back" goto _input1
if /i "%_input1%"=="clear" goto clearVar (
goto checkVar
)

每次执行文件时都会收到错误消息 “goto此时出乎意料”,命令窗口关闭。

使用pause命令我已经能够找到程序中我收到错误消息的部分。这已在该计划中得到评论。

任何人都可以帮助我吗?我的语法出了什么问题?

3 个答案:

答案 0 :(得分:2)

试试这个:

if /i "%_input1%"=="clear" goto clearVar
goto checkVar

这是无效的语法。

if /i "%_input1%"=="clear" goto clearVar (
goto checkVar
)

答案 1 :(得分:1)

设置变量似乎解决了我遇到的问题。 我只是简单地在程序的开头初始化变量

::command bank
set help=help
set back=back
set clear=clear

::methods
set add=add
set subtract=subtract
set multiply=multiply
set divide=divide

然后我将if语句改为看起来像这样

:subroutine2
if /i "%action%"=="%help%" goto help2
if /i "%action%"=="%back%" goto back2
if /i "%action%"=="%clear%" goto clearVar
if /i "%action%"=="%add%" goto _input2
if /i "%action%"=="%subtract%" goto _input2
if /i "%action%"=="%multiply%" goto _input2
if /i "%action%"=="%divide%" (goto _input2) else (goto functionerror)

这消除了我遇到的语法错误。问题似乎是它没有在“If”命令语法中识别object2。将用户选项初始化为变量,然后为这些变量提供用户为初始化命令而键入的完全相同的字符串,就可以解决问题。

如果有人想要完整的代码,以便他们可以进一步了解该程序,我的意思只是让我知道,我可以通过电子邮件发送/粘贴它以供将来参考。

答案 2 :(得分:1)

试试这个:

if /i "%_input1%"=="clean" (
    goto cleanVar
) ELSE (
    goto checkVar
)