0

我有一个脚本,它将编写一个进程文件(当前为 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

似乎确实有效,但我不知道为什么,而且我确信这不是正确的方法。

谁能解释为什么这行得通,而其他人没有,以及是否有适当的方法可以做到这一点?

谢谢

4

1 回答 1

2

引号内启动命令后的第一个参数被视为“窗口标题”。然后是命令和参数。

这就是为什么

start %%C %%D

不起作用,因为引号内的 %%C 被视为窗口标题并尝试运行 %%D 命令。

这也应该有效:

start "" %%C %%D

看:

start /?

为什么我不能在没有 /d 的命令行中启动程序?(视窗 7x64)

于 2012-08-20T13:11:38.470 回答