再说了,如果我有
- foo.exe`
- bar.exe
- baz.exe
如何运行所有的人都从一个批处理文件异步,即无需等待前一程序停止?
再说了,如果我有
如何运行所有的人都从一个批处理文件异步,即无需等待前一程序停止?
使用START
命令运行每个程序应该得到你所需要的:
START "title" [/D path] [options] "command" [parameters]
每START
调用运行在它的参数给出的命令,除非有执行立即返回, /WAIT
开关。
这适用于命令行应用程序。 Apps,而无需立即命令行的回报无论如何,所以可以肯定的,如果你想所有的异步运行,使用START
。
结合一对夫妇以前的答案,你可以尝试start /b cmd /c foo.exe
。
对于一个简单的例子,如果你想打印出来的Java /常规/ Grails的/ gradle产出的版本,你可以在一个批处理文件这样做:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
如果您有类似的Process Explorer(Sysinternals的),你会看到几个孩子的cmd.exe进程每一个Java进程(按照上面的命令)。 输出将打印在任何为了他们完成的画面。
start /b : Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
cmd /c : Carries out the command specified by string and then terminates
您可以使用start命令产卵后台进程,而无需启动新窗口:
start /b foo.exe
新工艺将不中断的用CTRL-C; 你只能用CTRL-BREAK杀死它(或关闭窗口,或通过任务管理器)。
创建具有如下的批处理文件:
start foo.exe
start bar.exe
start baz.exe
在启动命令在新窗口中运行你的命令,让所有3个命令将异步运行。
使用START命令 :
start [programPath]
如果路径程序包含空格记得要加引号。 在这种情况下,你还需要提供开放的控制台窗口标题
start "[title]" "[program path]"
如果您需要提供的参数追加他们在最后(命令引号外)
start "[title]" "[program path]" [list of command args]
使用/ B选项,以避免打开一个新的控制台窗口(但在这种情况下,你不能中断使用Ctrl-C的应用
还有第三个(可能更容易)选项。 如果要旋转起来的多个实例单个程序的,使用Unix风格命令处理器类似xargs的或GNU并行可以使一个相当简单的过程。
有一个名为Win32的xargs的克隆PPX2 ,使这个非常简单。
举例来说,如果你想转码的视频文件的目录,你可以运行下面的命令:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
采摘这种分开, dir /b *.mpg
抓住我的当前目录下的.MPG文件列表中, |
操作者管道该列表到PPX2,然后构建了一系列平行于要执行的命令; 4的时间,如在此通过指定-P 4
算子。 该-L 1
运营商告诉PPX2只发送我们的目录中的一个行上市在时间FFmpeg的。
在此之后,你只写你的命令行( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
)和{}
就会自动代替你的目录列表的每一行。
这不是普遍适用于所有情况,但比使用上面详述的批处理文件变通方法更容易了一大堆。 当然,如果你不处理的文件列表,你也可以管一个文本文件或任何其他程序到pxx2的输入的内容。