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

问题描述 投票:0回答:1

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

SET QUERY="heat wave"
START /d "C:\Program Files (x86)\Google\Chrome\Application" 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)\Google\Chrome\Application" chrome.exe https://www.google.com/search?q=%QUERY: =+%
)
windows batch-file
1个回答
1
投票

这里的关键是enabledelayedexpansion

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

有关delayedexpansion的更多信息请参阅cmdline的set /?

也可以没有delayedexpansion加倍最后的%并召唤开始。

SET SWITCH=1
IF %SWITCH%==1 (
SET QUERY="heat wave"
call START /d "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://www.google.com/search?q=%%QUERY: =+%%
)
© www.soinside.com 2019 - 2024. All rights reserved.