非阻塞批处理文件执行

8

我有一个批处理文件包含以下命令:

"C:\MI2\Stream\bin\Debug\Stream.exe" 19
"C:\MI2\Stream\bin\Debug\Stream.exe" 20
"C:\MI2\Stream\bin\Debug\Stream.exe" 21
"C:\MI2\Stream\bin\Debug\Stream.exe" 23
"C:\MI2\Stream\bin\Debug\Stream.exe" 25

我正在尝试执行5个应用程序实例,每个实例传递不同的参数。我的目标是当我运行这个批处理文件时,它会启动这个应用程序的5个实例,并为每个实例加载一个UI组件。最终,我将使其更加优雅,并在此之上添加一个包装器应用程序,但现在我只想让它们同时运行。

问题在于,当我启动这个批处理文件时,它会执行第一行,加载UI。然后就没有下文了。有什么想法吗?

编辑补充- 我肯定可以从单独的批处理文件中完成这个任务,但我想要一键启动。Scott

3个回答

21

你可以使用start命令:

start "" "C:\MI2\Stream\bin\Debug\Stream.exe" 19
start "" "C:\MI2\Stream\bin\Debug\Stream.exe" 20
start "" "C:\MI2\Stream\bin\Debug\Stream.exe" 21
start "" "C:\MI2\Stream\bin\Debug\Stream.exe" 23
start "" "C:\MI2\Stream\bin\Debug\Stream.exe" 25

第一个参数是创建命令行窗口的标题,但我们不关心它,所以可以留空。

更好的方法是使用 for

forr %i in (19, 20, 21, 23, 25) do start "" "C:\MI2\Stream\bin\Debug\Stream.exe" %i

1
第一组引号可能有点令人困惑。它们是为了在Windows标题栏中显示标题而设置的。如果您为路径包含引号(例如包含空格),则解析器将需要一个标题(svick的答案为空)。如果您的路径不需要引号,则无需设置标题。在命令提示符处键入start /?以获取更多详细信息。 - AlainD

3

Do

start C:\MI2\Stream\bin\Debug\Stream.exe 19
start C:\MI2\Stream\bin\Debug\Stream.exe 20

etc.


这对我似乎不起作用,它会启动两次 cmd.exe - svick
我移除了可能会引起混淆的双引号。 - Janick Bernet
这不是问题,至少在我的电脑上不是。 - svick
一定有问题,我在这里(Windows 7)尝试了完全相同的语法,应用程序会带着参数启动。而且 start /? 显示的语法是 start [command/program] [parameters]。"" 将被解释为标题。 - Janick Bernet

3

使用 start:

start C:\MI2\Stream\bin\Debug\Stream.exe 19
start C:\MI2\Stream\bin\Debug\Stream.exe 20
start C:\MI2\Stream\bin\Debug\Stream.exe 21
start C:\MI2\Stream\bin\Debug\Stream.exe 23
start C:\MI2\Stream\bin\Debug\Stream.exe 25

怎么样?这正是其他解决方案,我只是加入了一个开关来阻止它打开新窗口。 - TheCodeKing
当您将路径用“”括起来时,它会被视为窗口标题,而不是要执行的路径。 - svick
啊,我明白了,我用 ping(不带引号)测试了一下,因为我手头没有可执行文件。我会修改的。 - TheCodeKing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接