0

以下脚本的预期结果:如果用户按 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
4

2 回答 2

1

我怀疑您没有准确地报告代码的结果。如果按下 P,您发布的代码应该同时打印,如果按下 T,则仅打印 PINGLOOP。该行为是由于 IF ERRORLEVEL 语句的工作方式造成的,正如帮助中所解释的那样。要获得任何命令的帮助,只需在命令提示符下键入HELP commandNamecommandName /?。在您的情况下,您可以使用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.
...

您有 2 种选择可以使您的代码正常工作:

按数字递减顺序测试条件并使用 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
于 2013-01-04T14:49:07.123 回答
1

如果打开命令扩展,要扩展上面的答案,您还可以使用:

if %errorlevel% equ 1 echo PERMPING
if %errorlevel% equ 2 echo PINGLOOP

于 2013-01-19T21:11:54.177 回答