Ric*_*chN 180 cmd batch-file
说,如果我有
如何异步运行批处理文件中的所有这些,即无需等待以前的程序停止?
mac*_*die 249
使用该START命令运行每个程序应该可以满足您的需求:
START "title" [/D path] [options] "command" [parameters]
Run Code Online (Sandbox Code Playgroud)
每次START调用都会运行其参数中给出的命令并立即返回,除非使用/WAIT开关执行.
这适用于命令行应用程序.没有命令行的应用程序无论如何都会立即返回,所以可以肯定的是,如果要以异步方式运行所有应用程序,请使用START.
djK*_*osh 65
结合以前的几个答案,你可以试试start /b cmd /c foo.exe.
对于一个简单的例子,如果你想打印出java/groovy/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
Run Code Online (Sandbox Code Playgroud)
如果您有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
Run Code Online (Sandbox Code Playgroud)
小智 35
您可以使用start命令生成后台进程,而无需启动新窗口:
start /b foo.exe
CTRL-C不会中断新进程; 你只能用CTRL-BREAK(或关闭窗口,或通过任务管理器)杀死它.
Nik*_*hil 22
使用以下行创建批处理文件:
start foo.exe
start bar.exe
start baz.exe
Run Code Online (Sandbox Code Playgroud)
在启动命令在新窗口中运行你的命令,让所有3个命令将异步运行.
Pie*_*igi 17
使用START命令:
start [programPath]
Run Code Online (Sandbox Code Playgroud)
如果程序的路径包含空格,请记住添加引号.在这种情况下,您还需要为打开控制台窗口提供标题
start "[title]" "[program path]"
Run Code Online (Sandbox Code Playgroud)
如果需要提供参数,请将它们添加到末尾(在命令引号之外)
start "[title]" "[program path]" [list of command args]
Run Code Online (Sandbox Code Playgroud)
使用/ b选项可以避免打开新的控制台窗口(但在这种情况下,您无法使用CTRL-C中断应用程序
sch*_*mod 10
还有第三种(可能更容易)的选择.如果你想要启动单个程序的多个实例,使用像Xargs或GNU Parallel这样的Unix风格的命令处理器可以使这个过程相当简单.
有一个叫做PPX2的win32 Xargs克隆,这使得它非常简单.
例如,如果要转换视频文件的目录,可以运行以下命令:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Run Code Online (Sandbox Code Playgroud)
采摘此分开,dir /b *.mpg抓住在我的当前目录的.MPG文件的列表,该|运营商管该列表到PPX2,然后构建了一系列平行于要执行的命令; 一次4个,由-P 4操作员在此指定.该-L 1运营商告诉PPX2只发送我们的目录中的一个行上市在时间FFmpeg的.
之后,您只需编写命令行(ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"),并{}自动替换目录列表的每一行.
它并非普遍适用于所有情况,但比使用上面详述的批处理文件解决方法要容易得多.当然,如果您不处理文件列表,您还可以将文本文件或任何其他程序的内容传递到pxx2的输入中.