664 votes

Comment empêcher la fermeture automatique de la console après l'exécution d'un fichier batch ?

Quelle commande puis-je mettre à la fin d'un fichier batch pour empêcher la fermeture automatique de la console après l'exécution du fichier ?

6 votes

Ce serait bien s'il y avait un moyen de détecter si un fichier .cmd a été lancé par un double-clic dans l'explorateur (alors vous voulez qu'il fasse une pause à la fin) ou s'il a été lancé par une ligne de commande déjà ouverte. Dans ce dernier cas (et surtout s'il est exécuté par un autre programme), vous ne voulez pas de pause. Je n'ai pas trouvé de bonne solution pour ce cas (et j'utilise généralement une variable if %NOPAUSE%, mais cela ne fonctionne que pour les programmes parents, pas pour les shells paremt).

1 votes

4voto

decadenza Points 446

Je sais que je suis en retard, mais ce que je préfère, c'est.. :

:programend
pause>nul
GOTO programend

De cette façon, l'utilisateur ne peut pas sortir en utilisant la touche "Entrée".

0 votes

Je pense que oui, car c'est un moyen amélioré d'empêcher la fermeture de la console. Même si l'utilisateur appuie sur une touche, la console reste ouverte. L'utilisateur sera forcé de sortir uniquement en fermant la fenêtre de la console.

4voto

Steven Mark Ford Points 342

Cette petite astuce demande à l'utilisateur d'entrer une clé et la stocke dans la variable %exitkey% (cette variable peut être appelée comme vous le souhaitez).

set /p exitkey= "Press any key to continue..."

NB : l'espace après le '=' est très important.

3voto

BlazeLP Points 117

Possibilité 1 : Créez simplement 2 fichiers .bat et écrivez dans le premier :

start <filename> // name of 2nd batch file
exit

Le fichier de lot 2 est le fichier qui ne se ferme pas à la fin. Donc maintenant, lorsque vous ouvrez le lot n° 1, il démarre le second et se ferme lui-même. Quand le second se termine, il ne se ferme pas entièrement (tant que vous ne mettez pas exit à la fin).

Possibilité 2 : Fichier batch 1 :

call <filename>
cls
echo End of file
pause
<any code you want>

Lorsque le deuxième fichier se termine, il passe de nouveau au fichier 1 et en sort le reste. Avec cela, vous pouvez même créer des gestionnaires d'erreurs. Si le fichier 1 se plante, il passe au fichier 2 et l'affiche.

3voto

Hitesh Sahu Points 12561

Il existe deux façons de procéder, selon le cas d'utilisation.

1) Si vous voulez que l'invite cmd de Windows reste ouverte pour que vous puissiez voir le résultat de l'exécution et la fermer ensuite ; utilisez

pause

2) si vous voulez que l'invite cmd de Windows reste ouverte et vous permette d'exécuter une commande par la suite, utilisez

cmd

enter image description here

2voto

Zenedus Points 96
pause

ou

echo text to display
pause>nul

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X