繁体   English   中英

使用批处理文件打开vscode时,cmd打开不关闭

[英]When opening vscode using batch file, cmd opens and doesn't close

尝试使用批处理文件打开 vscode 文件夹时,Visual Studio 会打开该文件夹,但也会弹出一个 cmd 窗口,如果您使用 exit 命令,该窗口不会消失。

@echo off
start code "C:\GitHub\TestApp\testapp"
exit 

VSCode 正确打开,但此窗口也会打开

cmd窗口

使用 VSCode 1.52.1,我可以在退出批处理脚本后不打开 cmd 窗口的情况下启动它的唯一方法是:

explorer.exe "%userprofile%\AppData\Local\Programs\Microsoft VS Code\Code.exe"

注意:它不涉及打开要使用的特定本地目录。 但是也许您可以找到解决方案,例如将文件夹保存为工作区或使用Ctrl + R打开最近的文件夹。 另外,如果您只在该目录/工作区中工作,或者在关闭 VSCode 之前使用它,它将在下次启动时自动打开。

那是因为你实际上是在调用批处理文件code.cmd其位于[VSCodePath]\\bin\\code.cmd code.cmd文件依次调用实际的 VSCode 可执行文件code.exe

使用start命令调用批处理文件( .BAT.CMDstart ,将创建 CMD 进程的新实例来处理批处理文件的执行,但它使用/K开关而不是/C调用 CMD 进程

比如start code.cmd执行cmd /k code.cmd

正是/K开关使新的 cmd 在完成批处理文件的执行后保持打开状态。

要解决此问题,请不要直接将批处理文件提供给start命令,而是通过显式 CMD 调用执行它:

@echo off
start cmd /C code "C:\GitHub\TestApp\testapp"
exit 

该 CMD 窗口与您刚刚打开的 VSCode 实例相关联。 尝试关闭它将终止您启动的应用程序。 在这种情况下, VSCode

start xxx xxx...命令打开一个新的 cmd 终端来执行它的操作。 即使出现了一个新的提示,它本身可以用作普通终端,但 VSCode 进程作为父进程不可阻挡地链接到它。

如果您的目标是不启动单独的 cmd 窗口,请运行:

start code /b "C:\\GitHub\\TestApp\\testapp"

它只是在同一窗口中运行命令。 VSCode 窗口仍然不可避免地绑定到当前 cmd 窗口,如果 cmd 窗口消失,它将关闭,但至少没有启动另一个 cmd 窗口。

Windows 无法从终端在后台启动程序。

如果所有描述的解决方案都不适合您,请尝试创建一个普通的 Windows 快捷方式到"C:\\Users\\username\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" C:\\path-to-project-folder-or-file

快捷方式属性窗口

然后在你的.bat.cmd脚本中调用这个快捷方式(假设快捷方式名称是shortcut ):

@echo off
start C:\path-to-shortcut-file\shortcut

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM