批处理启动VSCode后关闭CMD致其退出的问题求助
解决批处理启动VSCode/Opera后CMD关闭导致程序终止的问题
这个问题的核心原因很清楚:你直接在批处理里运行程序时,程序会作为CMD窗口的子进程存在,当CMD窗口关闭时,系统会终止它的所有子进程,所以VSCode也跟着被关掉了。而你加的exit命令没生效,是因为CMD会默认等待所有子进程结束才会执行退出,除非你把程序放到独立的进程里运行。
这里给你两个实用的修改方案:
方案1:用start命令分离进程(推荐)
把批处理里直接启动程序的语句换成start命令,让程序在独立进程中运行,彻底和CMD窗口脱离关联。示例脚本如下:
:: 启动Opera(如果Opera不在系统PATH里,需要填写完整安装路径) start "" "C:\Program Files\Opera\launcher.exe" :: 启动VSCode并打开当前工作区 start "" code . :: 现在CMD可以正常自动关闭了 exit
start ""里的空引号是必须的:start命令的第一个参数是新窗口的标题,如果你的程序路径包含空格,直接写路径会被当成标题,所以用空占位符避免这个问题。- 如果Opera已经添加到系统环境变量的PATH中,直接写
start "" opera也可以正常运行。
方案2:用start /B命令(后台启动,不新开窗口)
如果你不想为每个程序额外打开控制台窗口,可以用start /B在后台启动程序,同样能实现进程分离的效果:
start /B "" "C:\Program Files\Opera\launcher.exe" start /B "" code . exit
测试一下修改后的批处理:运行后CMD窗口会自动关闭,Opera和VSCode都能正常保留运行,而且手动关闭CMD窗口也不会再影响这两个程序了。
内容的提问来源于stack exchange,提问作者Luis M.
相关产品推荐
相关产品推荐

