如何在两个不同的路径上同时启动.bat文件中的2个命令?

时间:2018-01-22 17:27:03

标签: batch-file cmd

我有两个目录,我想同时运行程序:

C:\ProgramA\startA.bat
C:\ProgramB\startB.bat

如何同时运行两个命令的单个bat文件?请注意,它们应该是异步的,因为startA不会'结束'而startB也不会结束。他们在终端输出文本并挂在那里。

我想避免打开一个终端,CD进入programA,运行startA.bat,然后打开另一个终端,CD进入programB,运行startB.bat文件。我只想要一个启动两个的bat文件。我可以杀死一个命令窗口来停止这两个进程。

我的bat文件目前如下:

set programdir=C:\ProgramA
CD /D %programdir%
@start /b cmd /c startA.bat
set programdir=C:\ProgramB
@start /b cmd /c startB.bat

上面的说法并不像我期望的那样发挥作用。

1 个答案:

答案 0 :(得分:0)

这实际上应该有效:

@start "" /B %SystemRoot%\System32\cmd.exe /C "C:\ProgramA\startA.bat"
@start "" /B %SystemRoot%\System32\cmd.exe /C "C:\ProgramB\startB.bat"

可能两个批处理文件都没有很好的编码,因为期望批处理文件的目录是批处理文件执行时的当前目录,而不需要处理命令行{{1甚至更好cd /D "%~dp0"或使用pushd "%~dp0"而不仅仅是"%~dp0OtherFile"引用批处理文件目录中的其他文件。

在这种情况下,必须在不打开新控制台窗口的情况下,在单独的命令进程中启动批处理文件之前,将当前目录显式设置为批处理文件的目录。

OtherFile

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • @start "" /B /D"C:\ProgramA" %SystemRoot%\System32\cmd.exe /C "startA.bat" @start "" /B /D"C:\ProgramB" %SystemRoot%\System32\cmd.exe /C "startB.bat"
  • cd /?
  • pushd /?