Comment empêcher la fermeture automatique de la console après l'exécution du fichier batch.
Quelqu'un peut-il me dire, quelle commande Mettre à la fin d'un fichier batch pour empêcher la fermeture automatique de la console après l'exécution du fichier?
15 réponses
Dans les fichiers batch Windows / DOS:
pause
Cela imprime un joli message "Press any key to continue . . . "
Ou, si vous ne voulez pas le message "Press any key to continue . . ."
, Faites ceci à la place:
pause >nul
Dépend de la question exacte!
Normalement pause
fait le travail dans un .chauve-souris fichier.
Si vous voulez cmd.exe ne pas fermer pour pouvoir rester en tapant, utilisez la commande cmd /k
à la fin du fichier.
Si vous voulez cmd.exe pour ne pas fermer et pouvoir continuer à taper, utilisez
cmd /k
Juste ressenti le besoin de clarifier ce que fait /k
(à partir du site Web de windows):
/k
: exécute la commande spécifiée par chaîne et continue.
Donc cmd /k
sans commande de suivi à la fin du fichier bat gardera simplement la fenêtre cmd.exe
ouverte pour une utilisation ultérieure.
D'autre part pause
à la fin d'un fichier batch simplement suspendre le processus et de mettre fin à cmd.exe
sur le premier bouton appuyez sur
La manière ci-dessous d'avoir des commandes dans un fichier batch ouvrira de nouvelles fenêtres d'invite de commandes et les nouvelles fenêtres ne se quitteront pas automatiquement.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Ajoutez {[1] } comme une nouvelle ligne sous le code que vous voulez exécuter:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
Ma façon est d'écrire un lot réel (en disant " foo.bat") pour terminer le travail; puis créer un autre " début.MTD":
@echo off
cmd /k foo.bat
Je trouve cela extrêmement utile lorsque je configure des variables d'environnement uniques.
Outre pause
.
set /p=
Peut être utilisé. il attend l'entrée de l'utilisateur et libère le flux lorsque vous appuyez sur Entrée.
Ou
runas /user:# "" >nul 2>&1
Qui fera la même chose sauf que rien de l'entrée de l'utilisateur ne sera affiché ni ne restera dans l'historique des commandes.
Possibilité 1: Juste faire 2 .bat fichiers et écrire dans le premier:
start <filename> // name of 2nd batch file
exit
Batch file 2 est le fichier qui ne se ferme pas à la fin. Alors maintenant, lorsque vous ouvrez le lot nr. 1, il commencera le 2ème et cloe lui-même. Lorsque le 2ème se termine, il ne se fermera pas entièrement (tant que vous ne mettrez pas de sortie à la fin)
Possibilité 2: Fichier Batch 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Lorsque le 2ème fichier se termine, il passera à nouveau au fichier 1 et affichera le reste. Avec cela, vous pouvez même faire des gestionnaires d'erreurs. Si nr. 1 se bloque il entre dans nr. 2 et l'affiche
Ce petit hack demande à l'utilisateur d'entrer une clé et de la stocker dans la variable % exitkey% (cette variable pourrait être appelée Tout ce que vous voulez cependant).
set /p exitkey= "Press any key to continue..."
NB: l'espace après le " = " est très important,
Si vous utilisez Maven et que vous voulez ignorer la saisie et empêcher la console de voir le résultat, vous devez utiliser la commande CALL
dans le script, en plus de 'mvn clean install'.
Comme ceci fermera la console
ECHO This is the wrong exemple
mvn clean install
pause
Comme ceci la console restera ouvert
ECHO This is the right exemple
CALL mvn clean install
pause
Si vous n'utilisez pas la commande CALL
, aucun des exemples passés ne fonctionnera.
Il y a deux façons de le faire dépendent de cas d'utilisation
1) si vous voulez que l'invite Windows cmd reste ouverte afin que vous puissiez voir le résultat de l'exécution et le fermer ensuite; utilisez
pause
2) Si vous voulez que l'invite Windows cmd reste ouverte et vous permette d'exécuter des mots-après de commande; Utilisez
cmd
Facile, ajouter cmd à votre dernière ligne de chauve-souris, mais! si vous réinitialisez ou effacez votre chemin système, vous devez démarrer votre cmd avec le chemin complet, comme:
%windir%\system32\cmd.exe
Par exemple, j'ai un fichier bat pour réinitialiser jdk à l'ancienne version comme ceci:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
Depuis que je réinitialise le chemin du système, je dois exécuter cmd avec le chemin complet, ou le système ne peut pas trouver cmd.exe, il ne fonctionnera pas cmd, et il suffit de fermer la fenêtre, et vous ne pouvez pas voir l'Erreur msg.
Je sais que je suis en retard mais ma façon préférée est:
:programend
pause>nul
GOTO programend
De cette façon, l'utilisateur ne peut pas quitter en utilisant entrée.