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のみを印刷する必要があります。ヘルプで説明されているように、この動作はIFERRORLEVELステートメントの動作によるものです。コマンドのヘルプを表示するには、単に入力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.
...

コードを機能させるには、次の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

To expand on the answer above if command extensions are turned on you can also use:

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

于 2013-01-19T21:11:54.177 に答える