错误消息Unexpected Goto在批处理文件中有多少字符串比较的原因是什么?

时间:2015-06-14 12:48:22

标签: batch-file

以下是我的批处理文件的代码:

:add_game_now
cls
echo Add a Game!
echo V for Victory and D for Defeat
set /p add_game=

if %add_game%==V goto add_game_now_v
if %add_game%==D goto add_game_now_d

:add_game_now_v
set /a elo=%elo%+20
if %division%==bronze goto add_game_bronze_v
if %division%==silver goto add_game_silver_v
if %division%==gold goto add_game_gold_v
if %division%==platinum goto add_game_platinum_v
if %division%==diamond goto add_game_diamond_v
if %division%==master goto add_game_master_v
if %division%==challanger goto add_game_challanger_v

:add_game_now_d
set /a elo=%elo%-15
if %division%==bronze goto add_game_bronze_d
if %division%==silver goto add_game_silver_d
if %division%==gold goto add_game_gold_d
if %division%==platinum goto add_game_platinum_d
if %division%==diamond goto add_game_diamond_d
if %division%==master goto add_game_master_d
if %division%==challanger goto add_game_challanger_d

问题在于,当我在:add_game_now并输入VD时,我会收到消息Unexpected Goto,然后退出。

出现此错误消息的原因是什么?

如果您需要整个文件,我可以发送它。

感谢您的帮助,是的,我不擅长编码。

1 个答案:

答案 0 :(得分:1)

您可以在标签名称中使用变量的值,而不是枚举所有这些GOTO目标标签:

SETLOCAL EnableExtensions
REM goto :EOF will terminate the batchfile
REM this only works if Extensions to CMD are enabled

:add_game_now
cls
echo Add a Game!
echo V for Victory and D for Defeat
set /p add_game=

GOTO add_game_now_%add_game%
GOTO :EOF

:add_game_now_V
:add_game_now_v
set /a elo=%elo%+20
GOTO add_game_%division%_v 
GOTO :EOF

:add_game_now_D
:add_game_now_d
set /a elo=%elo%-15
GOTO add_game_%division%_d 
GOTO :EOF

确保所有这些标签都存在!否则批次将崩溃。变量division也必须存在,并且必须具有值(例如' bronze')。 请考虑使用CHOICE代替set /p。通过这种方式,您可以确保只允许使用大写条目,并且只有' V'或者' D'。那时你不再需要加倍的标签了。