2

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

@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 命令,我已经能够查明我收到错误消息的程序部分。这已在程序中进行了评论。

谁能帮我?我的语法有什么问题?

4

3 回答 3

2

尝试这个:

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

这是无效的语法。

if /i "%_input1%"=="clear" goto clearVar (
goto checkVar
)
于 2013-10-11T01:04:37.423 回答
1

也试试这个:

if /i "%_input1%"=="clean" (
    goto cleanVar
) ELSE (
    goto checkVar
)
于 2014-02-02T10:14:42.367 回答
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。将用户选项初始化为变量,然后为这些变量提供与用户在初始化命令时键入的完全相同的字符串,就成功了。

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

于 2013-10-11T21:59:10.713 回答