![スクリプトが間違ったメッセージを印刷するのはなぜですか?](https://rvso.com/image/1558686/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私は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
を意味します。if
if /I "%:choice%"