【发布时间】:2017-08-22 21:49:27
【问题描述】:
我有这个
@echo off
:1
cls
echo Navigation: W-Up, S-Down, E-Enter
echo _________________________________
echo -(Option 1)
echo Option 2
echo Option 3
choice /c WSE /n
if ERRORLEVEL 1 goto 3
if ERRORLEVEL 2 goto 2
if ERRORLEVEL 3 goto opt1
:2
cls
echo Navigation: W-Up, S-Down, E-Enter
echo _________________________________
echo Option 1
echo -(Option 2)
echo Option 3
choice /c WSE /n
if ERRORLEVEL 1 goto 1
if ERRORLEVEL 2 goto 2
if ERRORLEVEL 3 goto opt2
:3
cls
echo Navigation: W-Up, S-Down, E-Enter
echo _________________________________
echo Option 1
echo Option 2
echo -(Option 3)
choice /c WSE /n
if ERRORLEVEL 1 goto 2
if ERRORLEVEL 2 goto 1
if ERRORLEVEL 3 goto opt3
:opt1
cls
echo You chose Option 1
pause >nul
exit
:opt2
cls
echo You chose Option 2
pause >nul
exit
:opt3
cls
echo You chose Option 3
pause >nul
exit
它应该做的是看起来像一个选择菜单,但由于某种原因,它只是不断地从第 2 行到第 9 行循环通过 ":1",它只是一遍又一遍地循环,为什么要这样做?我怎样才能让它不这样做?
【问题讨论】:
-
你必须反转你的 if 错误级别,从最高的数字开始。事实上,
if ERRORLEVEL 1 goto 1被解释为if ERRORLEVEL is 1 or greater goto 1,所以根本没有达到其他 IF。另一种方法是将if %errorlevel%==1 ...与 EnableExtensions (默认)进行比较 -
阅读
help if/If /?或 ss64.com/nt/if.html 有帮助
标签: batch-file choice