我有两个目录,我想同时运行程序:
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
上面的说法并不像我期望的那样发挥作用。
答案 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 /?