比如说,我有以下几个exe文件:
- foo.exe
- bar.exe
- baz.exe
我该如何在批处理文件中异步运行它们,即不等待前一个程序停止就运行下一个程序?
比如说,我有以下几个exe文件:
我该如何在批处理文件中异步运行它们,即不等待前一个程序停止就运行下一个程序?
使用START
命令来运行每个程序应该可以得到您所需的内容:
START "title" [/D path] [options] "command" [parameters]
每个 START
调用都会执行其参数给定的命令并立即返回,除非使用了 /WAIT
开关进行执行。
这适用于命令行应用程序。没有命令行的应用程序无论如何都会立即返回,因此为确保异步运行所有应用程序,请使用START
。
结合之前几个答案,你可以尝试 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
如果你有类似于进程探测器(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
echo off
,这个命令可以防止所有命令在控制台上显示。而 @
符号的作用与此类似,但只针对单个命令。因此,有时你会看到 @echo off
。 - djKianooshstart /b foo.exe
新进程将无法被 CTRL-C 打断;您只能使用 CTRL-BREAK(或关闭窗口或通过任务管理器)来终止它。start [programPath]
如果程序路径含有空格,请记得加上引号。在这种情况下,您还需要为打开的控制台窗口提供一个标题。
start "[title]" "[program path]"
如果您需要提供参数,请将它们附加在命令引号之外的末尾。
start "[title]" "[program path]" [list of command args]
使用/b选项可以避免打开新的控制台窗口(但在这种情况下,您无法使用CTRL-C来中断应用程序)。
还有第三个(可能更容易的)选项。如果您想要启动多个单个程序实例,使用类似于Unix风格命令处理器的Xargs或GNU Parallel可以使该过程变得相当简单。
有一个名为PPX2的Win32 Xargs克隆版,可以使这个过程变得非常简单。
例如,如果您想要转码视频文件目录,您可以运行以下命令:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
这段代码的作用是,dir /b *.mpg
获取当前目录下所有的 .mpg 文件列表,然后使用 |
运算符将该列表传递给 ppx2,ppx2 会构建一系列需要并行执行的命令;根据 -P 4
,每次执行4个命令。使用 -L 1
告诉 ppx2 每次只向 ffmpeg 发送一个目录列表中的文件名。
接下来,你只需编写命令行 (ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
),其中 {}
会自动替换为目录列表中的每一行。
虽然不是每个场景都通用,但这比使用批处理文件更容易。当然,如果你不是在处理文件列表,也可以通过管道将文本文件或任何其他程序的内容传递到 pxx2 的输入中。
我无法让任何东西工作,最终只能使用PowerShell来启动批处理脚本..有时甚至使用start cmd /c也无法正常工作,不知道为什么..我甚至尝试了像start cmd /c notepad & exit这样的东西
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
的每个条目。 :) - RichN