1
votes

Lors de l'ouverture de vscode à l'aide d'un fichier de commandes, cmd s'ouvre et ne se ferme pas

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

fenêtre cmd


1 commentaires

Avez-vous essayé sans start ?


3 Réponses :


1
votes

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.


1 commentaires

Mais je suis capable de fermer la fenêtre cmd et d'utiliser toujours l'instance de code de Visual Studio



1
votes

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 


3 commentaires

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"



0
votes

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 .

Fenêtre des propriétés du raccourci

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


0 commentaires