我有一个脚本,它将编写一个进程文件(当前是C:\ test.txt)(它检查来自预定义列表的进程)。
然后我运行了一些其他代码(不重要的是在这里做了什么,但这部分是为了结束这些进程)。
我的问题是,在我的脚本中,我需要能够重新启动已终止的进程,但是使用之前运行的cmd参数加载它们。
test.txt文件看起来像这样:
"C:\folder1\folder2\application1.exe" param1
"C:\folder1\folder2\folder3\application2.exe" param1 param2
"C:\folder4\application3.exe"
"C:\folder1\folder2\folder3\application4.exe" param1 param2 param3 param4
etc..
我使用for循环从文件中取出行并尝试运行它们;
for /f "usebackq tokens=1,* delims= " %%C in (C:\test.txt) do (
%%C %%D
)
这很好,除了脚本等待第一个进程完成(即再次终止),然后加载下一个进程,这些进程不会结束!
我尝试使用
start %%C %%D
但是我加载了一个带有文件路径的新CMD窗口,然后尝试运行名称来自%D的文件
使用;
start %%C %%C %%D
似乎确实有效,但我不知道为什么,而且我确信这不是正确的方法。
任何人都可以解释为什么这样做,而其他人没有,如果有正确的方法可以做到这一点?
由于
答案 0 :(得分:2)
引号内的start命令后的第一个参数被视为“Window Title”。然后是命令和参数。
这就是为什么
start %%C %%D
不起作用%% C在引号内被视为窗口标题并尝试运行%% D命令。
这也应该有效:
start "" %%C %%D
请参阅:
start /?
Why can't I start programs in the command line without /d? (Windows 7x64)