我試圖在Windows批處理文件這項工作:如果語法Windows批處理
if not exist "%~n1.ext" (
set /P z="PROMPT (y,n)?"
if /i "%z%" == "y" (
echo if is working
)
)
但無論輸入是什麼,它永遠不會進入回聲部分。語法中有錯嗎?
我試圖在Windows批處理文件這項工作:如果語法Windows批處理
if not exist "%~n1.ext" (
set /P z="PROMPT (y,n)?"
if /i "%z%" == "y" (
echo if is working
)
)
但無論輸入是什麼,它永遠不會進入回聲部分。語法中有錯嗎?
當你使用一個塊中的變量((
和)
之間,則需要啓用延遲擴展:
setlocal enabledelayedexpansion
set var=hello
if "a"=="a" (
set var=world
echo %var% !var!
)
哦,我現在看到。那麼我必須閱讀關於延遲擴展的內容。謝謝。 – user304822
斯蒂芬是正確的,你需要使用嵌套變量時使用enabledlayedexpansion這裏是你的代碼與語法(使用這些變量時!
更換%
):
setlocal enabledelayedexpansion
if not exist "%~n1.ext" (
set /P z="PROMPT (y,n)?"
if /i "!z!" == "y" (
echo if is working
)
)
肯定有一些扭曲 - 如果我多次運行它,並給答覆了''的提示,'B' ,'c'等等,然後第一次%z%是空的,之後它有前面的答案,而不是我剛纔給出的答案。 – ClickRick
另一個陷入「延期擴張陷阱」^^ – Stephan