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

88

J'exécute un fichier de commandes contenant 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 SSH dans le laboratoire informatique de mon université.

Cependant, si je l'exécute et que Xming n'est pas déjà ouvert, une fois que je quitte le 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.

yiwei
la source
1
est "C:\Program Files (x86)\Xming\Xming.exe"un paramètre de putty.exe ou une commande distincte?
bpoiss
Si la deuxième ligne est une deuxième commande, essayez également d'ajouter start avant cela.
Gris
1
@BernhardPoiss c'est une commande séparée, PAS un paramètre pour putty.exe. Si je mets cette ligne en premier, elle se bloque et ouvre le mastic. Si je mets start devant lui, Windows dit "Impossible de trouver 'C: \ Program'. Veuillez vous assurer qu'il est tapé correctement.
yiwei

Réponses:

134

Modifiez le fichier de commandes dans les STARTdeux programmes, au lieu d'en STARTcréer un et un CALLautre

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 ainsi, aucune fenêtre CMD ne restera ouverte après le démarrage du programme.

Ahmad
la source
28
+1 sauf lorsque vous utilisez des guillemets doubles pour le chemin, vous devez ajouter un premier paramètre ""car le titre devient requis. La deuxième commande devrait être start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowsinon elle essaiera d'ouvrir une fenêtre de commande intitulée C:\Program Files (x86)\Xming\Xming.exetentative d'exécution :0avec des paramètres-clipboard -multiwindow
Patrick Meinecke
En outre, cet start /B "GCFScape" "x64\GCFScape.exe">nulexemple m'a été utile
xacinay
4
"Si la commande est une commande cmd interne ou un fichier de commandes, le processeur de commandes est exécuté avec le commutateur / K sur cmd.exe. Cela signifie que la fenêtre restera après l'exécution de la commande." ss64.com/nt/start.html
CAD
3
@CADbloke Votre problème mentionné peut être résolu en utilisantcmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning
1
@ patrick-meinecke Merci d'avoir ajouté le commentaire sur "", j'étais frustré que cela me cause des problèmes. J'ai lu votre commentaire et un moment ah a suivi.
Michael Eakins
21

Vous terminez normalement un fichier de commandes par une ligne qui dit simplement exit. Si vous voulez vous assurer que le fichier est exécuté et que la fenêtre DOS se ferme après 2 secondes, vous pouvez ajouter les lignes:

timeout 2 >nul
exit

Mais la exitcommande ne fonctionnera pas si votre fichier de commandes ouvre une autre fenêtre, car tant que la deuxième fenêtre est ouverte, l'ancienne fenêtre DOS sera également affichée.

SOLUTION: Par exemple, il existe un super petit programme gratuit appelé BgInfo qui affichera toutes les informations sur votre ordinateur. En supposant qu'il se trouve dans un répertoire appelé C:\BgInfo, pour l'exécuter à partir d'un fichier batch avec le /popupcommutateur et pour fermer la fenêtre DOS pendant qu'elle est toujours en cours d'exécution, utilisez:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit
Adrian747
la source
avoir /popupen fait me donnait une erreur. Après avoir enlevé tout cela a fonctionné
Dmitry Efimenko
4

Si vous souhaitez séparer les commandes en une seule 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 fermera la fenêtre d'invite de commande après l'exécution de l'exe.

Feuille de Jenna
la source
3

Cela a fonctionné pour moi. Je voulais juste fermer la fenêtre de commande automatiquement après avoir quitté le jeu. Je double-clique simplement 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
décousu
la source
1

J'avais ceci, j'ai ajouté EXITet initialement cela n'a pas fonctionné, je suppose que par exigeant le called program exitingconseil mentionné dans une autre réponse ici, mais cela fonctionne maintenant sans plus tarder - je ne sais pas ce qui a causé cela, mais le point à noter est que je suis appeler un fichier de données .htmlplutôt que le programme qui le manipule browser.exe, je ne modifier quoi que ce soit d' autre , mais il suffit de dire qu'il est beaucoup plus propre que l' aide d' un fichier de chauve - souris pour accéder aux pages d'accès principaux de ces documents Web et seulement avoir title.bat, contents.bat, index.batdans le dossier racine avec le reste du contenu dans un sous-dossier.

ie: contents.bat lit

cd subfolder
"contents.html"
exit

Il est également préférable de modifier les icônes de fichier chauve-souris uniquement pour ces éléments en fonction du contexte dans lequel ils se trouvent, mais c'est une autre question, masquer les fichiers chauve-souris dans le sous-dossier et créer des raccourcis d'icônes personnalisés dans le dossier racine avec les images appelé pour la personnalisation également caché.

xtian170174
la source
0

Vous pouvez essayer le quelque peu dangereux: taskkill /IM cmd.exe..dangerous bcz qui tuera le cmd qui est ouvert et tous les cmd ouverts avant lui.

Ou ajoutez une vérification pour confirmer que vous aviez le bon cmd.exe, puis supprimez-le 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 (taskkill /PID %%A)si vous voulez le vérifier en premier (et peut-être installer pstools).

mélasse
la source
0

Essayez simplement /scomme indiqué ci-dessous.

Comme dernière ligne du type de fichier de commandes:

exit /s

La commande ci-dessus fermera la fenêtre Windows CMD.

/s - signifie silencieux comme dans (il attendrait une entrée du clavier).

Salmaan
la source
1
cmdLa commande de sortie de n'a pas de /scommutateur (et ce serait inutile de toute façon)
Stephan
-1

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

c: \ windows> quitter

Shyam99
la source
1
avez-vous lu la dernière phrase de la question?:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan
J'ai ajouté exit à la fin de mon script et cela a en fait résolu mon problème.
Attila