为什么我不能在start命令中使用变量作为程序名?

时间:2012-02-20 02:37:01

标签: batch-file

我有一个批处理脚本,最终会启动另一个批处理文件并等待它完成。这是我最初的语法:

for %%i in ("*.xml") do start /separate /wait "%PROGRAM_PATH%" "%LOCAL_OUTGOING_PATH%\%%i"

发生了什么,而不是打开%PROGRAM_PATH%指向的程序,它最终启动Internet Explorer并显示由%% i指定的XML文件。就像它忽略了start命令的%PROGRAM_PATH%部分一样。我尝试使用%PROGRAM_NAME%,但没有引号也不起作用。顺便说一句,%PROGRAM_PATH%指向“ “C:\ DOS \ copy.bat”。所以我最终不得不像这样硬编码那里的路径:

for %%i in ("*.xml") do start /separate /wait C:\DOS\copy.bat "%LOCAL_OUTGOING_PATH%\%%i"

这使它最终以我想要的方式工作。但我希望能够使用变量。为什么不起作用?

1 个答案:

答案 0 :(得分:1)

引号括起来的第一个START参数被视为窗口标题。如果你想用引号括起来的参数,你必须首先提供一个标题,即使是空标题:

for %%i in ("*.xml") do start "" /separate /wait "%PROGRAM_PATH%" "%LOCAL_OUTGOING_PATH%\%%i"

for %%i in ("*.xml") do start "Win Title" /separate /wait "%PROGRAM_PATH%" "%LOCAL_OUTGOING_PATH%\%%i"

键入START /?有关详细信息。