Answers:
使用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
如果您拥有诸如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
echo off
在开始时看到它,当您执行脚本时,它将阻止所有命令回显到控制台。该@
是类似的,但只是针对单个命令。因此,有时您会看到@echo off
。
您可以使用start命令来生成后台进程,而无需启动新窗口:
start /b foo.exe
新进程将不会被CTRL-C中断;您只能使用CTRL-BREAK(或通过关闭窗口或通过任务管理器)将其杀死。
BREAK
这些天键盘在哪里?
还有第三个(可能更简单)的选择。如果要启动单个程序的多个实例,则使用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中,然后构建一系列要并行执行的命令;一次4次,-P 4
操作员在此处指定。该-L 1
运营商告诉PPX2只发送我们的目录中的一行同时挂牌的ffmpeg。
之后,您只需编写命令行(ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
),{}
即可自动替换目录列表的每一行。
它并非普遍适用于所有情况,但比使用上面详述的批处理文件变通办法要容易得多。当然,如果您不处理文件列表,也可以将文本文件或任何其他程序的内容通过管道传输到pxx2的输入中。
我什么都做不了,我最终只是使用powershell来启动bat脚本..有时甚至启动cmd / c也无法正常工作,不确定为什么..我什至尝试了诸如start cmd / c记事本&exit之类的东西
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
仔细阅读每个条目。:)