スクリプトが間違ったメッセージを印刷するのはなぜですか?

スクリプトが間違ったメッセージを印刷するのはなぜですか?

私は2つの選択肢を持つスクリプトを扱っています: Y=はい/操作1とN=いいえ/操作のキャンセル。はいを選択すると、キャンセルのメッセージが最初に印刷されます。それから操作 1 が実行されます。適切なメッセージは対応する選択肢に対してのみ表示されるようにしたいです。コードは次のとおりです。

@ECHO OFF

:choice
echo.
echo Do you want to proceed with the process?
echo Enter Y to run or N to cancel.
set /p :choice=
if /I "%c%" EQU "Y" goto :YES
if /I "%c%" EQU "N" goto :NO

:NO
echo The operation has been cancelled...
PAUSE
goto :END

:YES
:: Additional code for operation 1 goes here.

echo The operation has been completed successfully!
PAUSE

:END

答え1

set /p varName=に保存する値を入力するように求められますvarName。ステートメントは、まったく異なるものではなく、ifチェックする必要があります。varName

現在、設定:choiceと確認を行っていますc。(%c%)

変更してみてください

set /p :choice= 
if /I "%c%" EQU "Y" goto :YES 
if /I "%c%" EQU "N" goto :NO

set /p choice= 
if /I "%choice%" EQU "Y" goto :YES 
if /I "%choice%" EQU "N" goto :NO

私の例では、コマンドの「choice」の前の「:」も削除しました。これは不要と思われるため、ステートメントを次のようにする必要があることset /pを意味します。ifif /I "%:choice%"

関連情報