我有以下批處理文件的代碼(?):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鍵默認操作。但是當我使用N或Y鍵時,PATH_EXISTS_ANSWER的值似乎是未定義的,腳本進入另一個循環,然後,無論我回答什麼,腳本somewhy使用以前的答案。 例如,如果我回答Y腳本再次詢問,如果我選擇N它鍵入「你說是」。 我在做什麼錯?
我懷疑CMD.exe在光標離開IF塊時計算變量的實際值。但爲什麼? – 2012-01-12 11:55:54