嵌套在 if 语句中时,启动 cmd 无法在 windows 批处理文件中正确执行



无论出于何种原因,此命令都有效:

SET QUERY="heat wave"
START /d "C:Program Files (x86)GoogleChromeApplication" chrome.exe https://www.google.com/search?q=%QUERY: =+%

但这不会:

SET SWITCH=1
IF %SWITCH%==1 (
SET QUERY="heat wave"
START /d "C:Program Files (x86)GoogleChromeApplication" chrome.exe https://www.google.com/search?q=%QUERY: =+%
)

这里的关键是enabledelayedexpansion

setlocal enabledelayedexpansion
SET SWITCH=1
IF %SWITCH%==1 (
SET QUERY="heat wave"
START /d "C:Program Files (x86)GoogleChromeApplicationchrome.exe" https://www.google.com/search?q=!QUERY: =+!
)

有关delayedexpansion的更多信息,请从cmdlineset /?

也可以通过加倍最后一个%并调用 Start 来不delayedexpansion

SET SWITCH=1
IF %SWITCH%==1 (
SET QUERY="heat wave"
call START /d "C:Program Files (x86)GoogleChromeApplicationchrome.exe" https://www.google.com/search?q=%%QUERY: =+%%
)

最新更新