说,如果我有
foo.exe bar.exe baz.exe
我如何从批处理文件异步运行它们,即不等待前一个程序停止?
说,如果我有
foo.exe bar.exe baz.exe
我如何从批处理文件异步运行它们,即不等待前一个程序停止?
当前回答
你可以使用start命令在不启动新窗口的情况下生成后台进程:
启动/b foo.exe
新进程将不可用CTRL-C中断;你只能用CTRL-BREAK(或通过关闭窗口,或通过任务管理器)杀死它。
其他回答
使用START命令:
start [programPath]
如果程序的路径包含空格,请记住添加引号。在这种情况下,您还需要为打开的控制台窗口提供一个标题
start "[title]" "[program path]"
如果需要提供参数,则将它们附加在末尾(在命令引号之外)
start "[title]" "[program path]" [list of command args]
使用/b选项避免打开新的控制台窗口(但在这种情况下,不能使用CTRL-C中断应用程序
使用START命令运行每个程序应该会得到你所需要的:
START "title" [/D path] [options] "command" [parameters]
每个START调用都运行其参数中给定的命令并立即返回,除非使用/WAIT开关执行。
这适用于命令行应用程序。没有命令行的应用程序无论如何都会立即返回,所以为了确保,如果你想要异步运行,请使用START。
我不能得到任何工作,我最终只是使用powershell启动bat脚本..有时甚至启动CMD /c不工作不知道为什么..我甚至尝试了像启动cmd /c notepad &退出这样的东西
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
用下面的代码创建一个批处理文件:
start foo.exe
start bar.exe
start baz.exe
start命令在一个新窗口中运行您的命令,因此所有3个命令都将异步运行。
你可以使用start命令在不启动新窗口的情况下生成后台进程:
启动/b foo.exe
新进程将不可用CTRL-C中断;你只能用CTRL-BREAK(或通过关闭窗口,或通过任务管理器)杀死它。