web-dev-qa-db-fra.com

Comment fermer automatiquement la fenêtre cmd après l'exécution d'un fichier batch?

J'exécute un fichier de commandes qui a ces deux lignes: 

start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Ce fichier de commandes est utilisé pour exécuter l’application Xming, puis l’application PuTTY afin que je puisse effectuer une connexion SSH au laboratoire informatique de mon université.

Cependant, si je lance ceci et que Xming n'est pas déjà ouvert, une fois que je sors du terminal PuTTY, la fenêtre cmd reste ouverte. Ce n'est que si j'ai déjà exécuté Xming que la fenêtre cmd se ferme lorsque je ferme le terminal PuTTY. J'ai essayé d'ajouter exit à la dernière ligne du fichier de commandes, mais en vain.

54
yiwei

Modifiez le fichier de commandes sur START les deux programmes, au lieu de STARTing un et CALLing un autre

start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Si vous l'exécutez comme ceci, aucune fenêtre CMD ne restera ouverte après le démarrage du programme.

87
Ahmad

Pour les débutants qui regardent: -

  • Vous terminez normalement un fichier de commandes avec une ligne qui dit simplement quitter

* Si vous voulez vous assurer que le fichier a été exécuté et que la fenêtre DOS se ferme après 2 secondes, vous pouvez ajouter les lignes suivantes:

délai d'attente 2> nul

sortie

  • Mais .... la commande de sortie ne fonctionnera pas si votre fichier de commandes ouvre une autre fenêtre - car tant que la seconde fenêtre est ouverte, l'ancienne fenêtre DOS est également affichée. 

SOLUTION: Par exemple, il existe un excellent petit programme gratuit appelé BgInfo qui affiche toutes les informations relatives à votre ordinateur. Supposons qu'il se trouve dans un répertoire appelé C:\BgInfo. Pour l'exécuter à partir d'un fichier de commandes avec le commutateur "/ popup" ..... ET pour que la fenêtre DOS se ferme ultérieurement pendant qu'elle s'exécute encore, utilisez:

démarrer "" "C:\BgInfo\BgInfo.exe"/popup

sortie

6
Adrian747

Cela a fonctionné pour moi. Je voulais juste fermer la fenêtre de commande automatiquement après avoir quitté le jeu. Je viens de double-cliquer sur le fichier .bat sur mon bureau. Pas de raccourcis.

taskkill /f /IM Explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start Explorer.exe
exit /B
2
scrappy

Ajouter ce code à la fin du code d'exécution

c:\windows> exit

0
Shyam99

Si vous voulez séparer les commandes en une commande par fichier, vous pouvez faire

cmd /c start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"

et dans l'autre fichier, vous pouvez faire 

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

La commande cmd/c ferme la fenêtre d'invite de commande après l'exécution de l'exécutable. 

0
Jenna Leaf

Vous pourriez essayer le dangereux: taskkill /IM cmd.exe ..dangerous bcz qui va tuer le cmd qui est ouvert et tous les cmd ouverts avant.

Ou ajoutez une vérification pour confirmer que vous aviez le bon cmd.exe, puis éliminez-la via PID, comme ceci:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

Remplacez (pslist &&A) ou (tasklist /FI "PID eq %%A") par le (taskkill /PID %%A) si vous voulez le vérifier en premier (et peut-être installer pstools).

0
treacle