(?):BATファイル:私はバッチファイルのコードを次している奇妙なSET動作
@echo off
SET INSTALL_PATH=c:\program files\
:ask_again
if exist "%INSTALL_PATH%" (
SET /P PATH_EXISTS_ANSWER=Path exists, overwrite?[y/n/default:n]
if not defined PATH_EXISTS_ANSWER (
echo You chose default action^(N^). Try another installation path.
echo.
goto default
)
if /I "%PATH_EXISTS_ANSWER%"=="n" (
echo You chose not to use existing folder. Try another installation path.
echo.
goto noc
)
if /I "%PATH_EXISTS_ANSWER%"=="y" (
echo You chose to overwrite existing folder. Existing files will be overwritten.
echo.
goto yesc
)
echo Please choose Y or N
echo.
goto ask_again
)
:yesc
echo you said yes
goto end
:default
echo you said default
goto end
:noc
echo you said no
goto end
:end
と私はちょうどEnterキーを押し、デフォルトのアクションを選択した場合、それはOKです。しかし、私はNキーまたはYキーを使用すると、PATH_EXISTS_ANSWERの値が定義されていないように見えます。スクリプトは別のループを経て、私の答えにかかわらず、スクリプトsomewhyは以前の答えを使用します。 たとえば、私はYスクリプトに答えると再び尋ねます。もし私がNを選んだら "はい"と答えます。 何が間違っていますか?
私は、カーソルがIFブロックから出るときに、変数の実際の値を評価するという疑いがあります。しかし、なぜ? –