簡體   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