以下脚本的预期结果:如果用户按下P,则为PERMPING;如果用户按下T,则为PINGLOOP。但是,无论用户按什么,脚本都会回显 。知道是什么给出了什么?
CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?"
echo %ERRORLEVEL%
IF ERRORLEVEL 1 ECHO PERMPING
IF ERRORLEVEL 2 ECHO PINGLOOP
答案 0 :(得分:1)
我怀疑您没有准确报告代码的结果。如果按下P,则您发布的代码应打印,如果按下T,则仅打印PINGLOOP。行为是由IF ERRORLEVEL语句的工作原理引起的,如帮助所解释的那样。要获得任何命令的帮助,只需在命令提示符下键入HELP commandName
或commandName /?
即可。在您的情况下,您可以使用IF /?
查看以下内容
Performs conditional processing in batch programs.
IF [NOT] ERRORLEVEL number command
...
ERRORLEVEL number Specifies a true condition if the last program run
returned an exit code equal to or greater than the number
specified.
...
您有两种选择可以使您的代码有效:
以递减数字顺序测试条件并使用ELSE子句
CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?"
echo %ERRORLEVEL%
IF ERRORLEVEL 2 (
ECHO PINGLOOP
) ELSE IF ERRORLEVEL 1 (
ECHO PERMPING
)
或使用IF %ERRORLEVEL%==N
CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?"
echo %ERRORLEVEL%
IF %ERRORLEVEL% == 1 ECHO PERMPING
IF %ERRORLEVEL% == 2 ECHO PINGLOOP
答案 1 :(得分:1)