如何通过.bat文件同时启动多个程序?原因及解决方案咨询
问题描述
我制作了两个.bat文件用于启动应用,期望双击.bat文件后,Outlook、Microsoft Edge、OneNote三个程序能同时弹出。
实际运行情况如下:
示例1:
@echo off "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneNote.lnk" exit
执行时会先启动Outlook,直至关闭Outlook后,Microsoft Edge和OneNote才会弹出。
示例2:
@echo off "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneNote.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" exit
执行时Microsoft Edge和OneNote会同时启动,但需关闭OneNote后Outlook才会启动。
系统配置:
- Windows 10 Enterprise 21H2
- 安装日期:10/27/2021
- OS版本:19044.1826
- Windows Feature Experience Pack:120.2212.4180.0
请问为何会出现该现象?如何实现三个程序同时启动?
原因分析
在批处理文件中直接执行快捷方式(.lnk)时,部分程序会让批处理进程等待自身完全退出后才继续执行下一行命令,这取决于程序的启动行为:
- Outlook和OneNote属于这类会阻塞批处理流程的程序
- Microsoft Edge启动后会立即释放批处理进程,不会阻塞后续命令
这就是示例1中必须关闭Outlook才会启动后续程序,示例2中Edge启动后直接执行OneNote,但OneNote又阻塞Outlook启动的原因。
解决方法
要实现三个程序同时启动,需要用start命令来启动每个程序——start命令会创建新进程运行目标程序,不会阻塞批处理的后续执行。修改后的批处理代码如下:
@echo off start "" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" start "" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk" start "" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneNote.lnk" exit
说明:
start命令后的空双引号""是必填项,用来指定新窗口的标题(此处无需标题故留空),省略会导致带空格的路径被错误解析。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

