cmd调用函数不成功(使用errorlevel)

时间:2014-03-08 00:01:18

标签: batch-file cmd

代码:

@echo off
set mode=1
echo.------------------------
echo.^|  GAME LAUNCHER V.1.0 ^|
echo.^|                      ^|
echo.^| -------------------  ^|
echo.^| ^|  LOAD NEW GAME ^|  ^|
echo.^| ^|   GET NEW GAME  ^|  ^|
echo.^| -------------------  ^|
echo.------------------------
choice /c WSADK /n
if %errorlevel%==5 (
if %mode%==1 (
goto game.load
) else (
goto game.get
)
) else (
if %mode%==1 (
set mode=2
) else (
set mode=1
)
)

if %mode%==1 (
call main.mode.1
) else (
call main.mode.2
)

:main.mode.1
cls
echo.------------------------
echo.^|  GAME LAUNCHER V.1.0 ^|
echo.^|                      ^|
echo.^| -------------------  ^|
echo.^| ^|  LOAD NEW GAME ^|  ^|
echo.^| ^|   GET NEW GAME  ^|  ^|
echo.^| -------------------  ^|
echo.------------------------
goto :EOF

:main.mode.2
cls
echo.------------------------
echo.^|  GAME LAUNCHER V.1.0 ^|
echo.^|                      ^|
echo.^| -------------------  ^|
echo.^| ^|   LOAD NEW GAME ^|  ^|
echo.^| ^|  GET NEW GAME  ^|  ^|
echo.^| -------------------  ^|
echo.------------------------
goto :EOF


:game.get
cls
echo.Press any button to get games......
pause >nul
start http://tool-box.weebly.com/

:game.load
echo BUILDING......
pause >nul

后窗口立即消失
  

w ^ 取值 A d

1 个答案:

答案 0 :(得分:2)

看起来没问题。输入只有一个时刻,您可以选择W,A,S,D和K.如果您选择K以外的任何值,mode将设置为2,从而拨打电话到:main.mode.2。从该标签中,您回显一串线并跳转到:EOF,结束下标。

之后,主脚本继续从调用开始,基本上从:main.mode.1开始执行,这也会回显一些行,然后再次跳转到:EOF,结束主脚本。

[编辑]

再次阅读,并纠正它。如果调用首先起作用,上面的将是真的。但是要使call处理标签,您必须在标签名称前加冒号。既然你没有,我猜这个脚本试图启动一个名为'main.mode.2'的外部脚本,这个脚本可能找不到。因此脚本显示错误并继续运行,不久之后遇到goto :EOF,结束脚本。

提示:要调试这样的脚本,请打开CMD并从那里运行脚本。然后窗口将保持打开状态,您可以更好地检查实际发生的情况。