web-dev-qa-db-fra.com

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

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

459
joe

Dans les fichiers batch Windows/DOS:

pause

Ceci affiche un joli "Press any key to continue . . . "

Ou, si vous ne voulez pas le message "Press any key to continue . . .", procédez comme suit:

pause >nul
586
Dave Bauman

Cela dépend de la question exacte!

Normalement, pause effectue le travail dans un fichier . Bat.

Si vous voulez que cmd.exe ne ferme pas pour pouvoir continuer à taper, utilisez la commande cmd /k à la fin du fichier.

131
Rutger Nijlunsing

Si vous souhaitez que cmd.exe ne ferme pas et puisse continuer à taper, utilisez cmd /k

J'ai juste ressenti le besoin de clarifier ce que fait /k (à partir du site Web 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 restera simplement la fenêtre cmd.exe ouverte pour une utilisation ultérieure.

De plus, pause à la fin d'un fichier de commandes mettra simplement en pause le processus et mettra fin à cmd.exe lors de la première pression sur un bouton

59
Valentine Stone

La manière ci-dessous d'avoir des commandes dans un fichier de commandes ouvrira une nouvelle fenêtre d'invite de commande et les nouvelles fenêtres ne se fermeront pas automatiquement.

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2
21
user6928445

Ajoutez cmd.exe en tant que nouvelle ligne sous le code que vous souhaitez exécuter:

c:\Python27\python D:\code\simple_http_server.py

cmd.exe
11
lyfing

mon moyen est d'écrire un lot réel (en disant "foo.bat") pour terminer le travail; puis créez un autre "start.bat":

@echo off
cmd /k foo.bat

Je trouve cela extrêmement utile lorsque je configure des variables d’environnement uniques.

9
Erich Chen

Appelez cmd à la fin du fichier de commandes.

8
user4155296

Si vous utilisez Maven et que vous voulez ignorer la saisie et empêcher la console de se fermer pour voir le résultat, vous devez utiliser la commande CALL dans le script, en plus de la commande 'mvn clean install'.

Comme cela va fermer la console

ECHO This is the wrong exemple
mvn clean install
pause

Comme ceci la console restera ouverte

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.

7
Andrey Hartung

à part pause.

set /p=

peut être utilisé. Il attend une 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 utilisateur ne sera affiché ni ne restera dans l'historique des commandes.

5
npocmaka

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

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

Le fichier de commandes 2 est le fichier qui ne se fermera pas à la fin. Alors maintenant, quand vous ouvrez le lot n ° 1, il démarrera le 2e et cloe lui-même. Quand le 2ème finira, il ne fermera pas complètement (tant que vous ne mettrez pas la sortie à 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 à nouveau au fichier 1 et en affiche le reste. Avec cela, vous pouvez même faire des gestionnaires d'erreur. Si n ° 1 tombe en panne, il entre dans le n ° 2 et l'affiche

3
BlazeLP

Ce petit hack demande à l'utilisateur de saisir une clé et la stocke dans la variable% exitkey% (cette variable peut être appelée tout ce que vous voulez).

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

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

2
Steven Mark Ford

J'ai eu des problèmes avec les réponses ici, alors je suis venu avec ceci, qui fonctionne pour moi (TM):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
2
lama12345
pause

ou

echo text to display
pause>nul
2
Zenedus

Je sais que je suis en retard mais ma méthode préférée est:

:programend
pause>nul
GOTO programend

De cette manière, l'utilisateur ne peut pas quitter avec enter.

2
decadenza

Il y a deux façons de le faire dépend du cas d'utilisation

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

pausename__

2) si vous voulez que l'invite de commande cmd de Windows reste ouverte et vous permette d'exécuter des commandes après la commande; utilisation

cmdname__

enter image description here

1
Hitesh Sahu

Facile, ajoutez 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 suit:

%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 j'ai réinitialisé le chemin système, je dois exécuter cmd avec le chemin complet, ou le système ne peut pas trouver cmd.exe, il ne pourra pas exécuter cmd et ferme simplement la fenêtre, et vous ne pouvez pas voir le message d'erreur msg .

0
Wei Kleeff