当使用批处理文件打开VSCode时,CMD会打开但不会关闭。

6
尝试使用批处理文件打开vscode文件夹时,Visual Studio会打开该文件夹,但同时还会弹出一个cmd窗口,如果使用退出命令,该窗口就不会关闭。
@echo off
start code "C:\GitHub\TestApp\testapp"
exit 

VSCode可以正常打开,但是也会弹出这个窗口

cmd window


你尝试过不用 start 吗? - aschipfl
4个回答

6
使用VSCode 1.52.1版本,我找到的唯一不需要在退出批处理脚本后打开命令行窗口即可启动的方法如下:
explorer.exe "%userprofile%\AppData\Local\Programs\Microsoft VS Code\Code.exe"

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

1
很棒的是,VS Code可以重新打开之前的会话。 - Goozak
运行此命令后,您可以使用“call code”打开一个新的空窗口,“call code folder_path”在新窗口中打开文件夹,以及“call code path_to_file”在当前窗口中打开文件。如果使用explorer.exe首先打开VSCode,则终端会在结束时关闭。 - aljgom

2
这是因为实际上您正在调用位于[VSCodePath]\bin\code.cmd的批处理文件code.cmd。然后,code.cmd文件会调用实际的VSCode可执行文件code.exe
当使用start命令调用批处理文件(.BAT.CMD)时,将创建一个新的CMD进程来处理批处理文件的执行,但它使用/K开关而不是/C
例如,start code.cmd执行cmd /k code.cmd 正是/K开关导致新的cmd在完成批处理文件的执行后保持打开状态。
要解决问题,请不要直接向start命令提供批处理文件,而是通过显式CMD调用来执行它:
@echo off
start cmd /C code "C:\GitHub\TestApp\testapp"
exit 

这种方法仍然会弹出窗口,但它会作为一个空白终端弹出,没有目录。一旦你关闭 Visual Studio Code,它也会关闭。 - Tadas Petra
@TadasPetraitis,终端窗口在vs code运行时保持打开的原因可能是您直接运行了code.exe。在这种情况下,vs code会附加到父控制台,导致控制台保持打开状态,直到关闭为止。要解决此问题,请尝试显式调用code.cmdstart cmd /C code.cmd .....但是它会导致一个终端窗口快速弹出并消失。如果不喜欢弹出窗口,请将start命令参数中的/b开关添加上:start /b cmd /c code.cmd ..... - sst
此外,您应该能够放弃start命令,并在自己的批处理文件中直接调用code.cmd文件:call code.cmd "C:\GitHub\TestApp\testapp" - sst

1
那个CMD窗口与您刚刚打开的VSCode实例相关联。试图关闭它将终止您启动的应用程序(在本例中为VSCode)。
“start xxx xxx…”命令会打开一个新的cmd终端以执行其操作。即使出现了一个新的提示符,可以像普通终端一样使用它,但是VSCode进程与其作为父进程不可避免地链接在一起。
如果您的目标是不启动单独的cmd窗口,则运行:
“start code /b “C:\GitHub\TestApp\testapp””
这只是在同一个窗口中运行该命令。VSCode窗口仍然与当前的cmd窗口不可避免地绑定在一起,如果cmd窗口消失,它将关闭,但至少不会启动另一个cmd窗口。
Windows无法从终端后台启动程序的能力。

5
但我可以关闭命令行窗口,继续使用 Visual Studio Code 实例。 - Tadas Petra

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

Shortcut properties window

然后在你的 .bat 或者 .cmd 脚本中通过调用这个快捷方式来执行它(假设这个快捷方式的名称为 shortcut):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接