Lorsque vous essayez d'ouvrir le dossier vscode à l'aide d'un fichier de commandes, Visual Studio s'ouvre avec ce dossier, mais une fenêtre cmd apparaît et ne disparaît pas si vous utilisez la commande exit.
@echo off start code "C:\GitHub\TestApp\testapp" exit
VSCode s'ouvre correctement, mais cette fenêtre s'ouvre également
3 Réponses :
Cette fenêtre CMD est associée à l'instance VSCode que vous venez d'ouvrir. Tenter de le fermer mettra fin à l'application que vous avez démarrée. ( dans ce cas, VSCode )
La commande start xxx xxx...
ouvre un nouveau terminal cmd pour effectuer son action. Même si une nouvelle invite apparaît, qui peut être utilisée comme un terminal normal lui-même, le processus VSCode lui est inexorablement lié en tant que processus parent.
Si votre objectif est de ne pas lancer une fenêtre cmd séparée, exécutez:
start code /b "C:\GitHub\TestApp\testapp"
qui exécute simplement la commande dans la même fenêtre. La fenêtre VSCode est toujours inexorablement liée à la fenêtre cmd actuelle et se fermera si la fenêtre cmd disparaît, mais au moins une autre fenêtre cmd n'est pas lancée.
Windows n'a pas la capacité de lancer un programme en arrière-plan à partir du terminal.
Mais je suis capable de fermer la fenêtre cmd et d'utiliser toujours l'instance de code de Visual Studio
C'est parce que vous code.cmd
fait le fichier de commandes code.cmd
qui se trouve dans [VSCodePath]\bin\code.cmd
. Le fichier code.cmd
à son tour le véritable exécutable code.exe
Lors de l'appel d'un fichier de commandes ( .BAT
ou .CMD
) à l'aide de la commande de start
, une nouvelle instance de processus CMD sera créée pour gérer l'exécution du fichier de commandes, mais elle appelle le processus CMD avec le commutateur /K
plutôt que /C
Par exemple, start code.cmd
exécute cmd /k code.cmd
C'est le commutateur /K
qui fait que la nouvelle cmd reste ouverte après la fin de l'exécution du fichier de commandes.
Pour résoudre, au lieu de fournir le fichier de commandes directement à la commande de start
, exécutez-le par une invocation CMD explicite:
@echo off start cmd /C code "C:\GitHub\TestApp\testapp" exit
Cette méthode fait toujours apparaître la fenêtre, mais elle apparaît comme un terminal vide sans répertoire. Et se ferme une fois que vous fermez le code de Visual Studio, il se ferme également
@TadasPetraitis, La raison pour laquelle la fenêtre du terminal reste ouverte pendant l'exécution de vs code est que vous exécutez probablement directement code.exe
. Dans ce cas, vs code s'attache à la console parent, oblige la console à rester ouverte jusqu'à ce qu'elle soit fermée. Pour résoudre, essayez d'appeler code.cmd
explicitement: start cmd /C code.cmd .....
mais cela fait start cmd /C code.cmd .....
une fenêtre de terminal et disparaît rapidement. Si vous ne pas comme le flash pop - up ajouter le /b
commutateur au start
des paramètres de commande: start /b cmd /c code.cmd .....
Vous devriez également pouvoir abandonner complètement la commande de start
et appeler le fichier code.cmd
directement dans votre propre fichier de commandes: call code.cmd "C:\GitHub\TestApp\testapp"
Si toutes les solutions décrites ne fonctionnent pas pour vous, essayez de créer un raccourci Windows ordinaire vers "C:\Users\username\AppData\Local\Programs\Microsoft VS Code\Code.exe" C:\path-to-project-folder-or-file
.
Appelez ensuite ce raccourci dans votre script .bat
ou .cmd
comme ça (en supposant que le nom du shortcut
est shortcut
):
@echo off start C:\path-to-shortcut-file\shortcut
Avez-vous essayé sans
start
?