Pause du fichier batch MS-DOS avec la touche Entrée


146

Est-il possible dans le fichier de commandes MS-DOS de suspendre le script et d'attendre que l'utilisateur appuie sur la touche Entrée?

Je souhaite faire cela dans une boucle for. Après chaque itération, je veux que le script se mette en pause et attende que l'utilisateur appuie sur «Entrée»

Réponses:


247

Il y a une pausecommande qui fait exactement cela, bien que ce ne soit pas spécifiquement la touche Entrée.

Si vous voulez vraiment attendre uniquement la touche Entrée, vous pouvez utiliser la setcommande pour demander une entrée utilisateur avec une variable factice, quelque chose comme:

set /p DUMMY=Hit ENTER to continue...


17
Vous n'avez pas besoin de spécifier un nom de variable:, set /p=Hit ENTER to continue...ou simplement set /p=si vous n'avez pas besoin d'une invite.
dbenham

2
Pour une raison quelconque, mon application passe juste au-delà de la logique de pause. Très étrange.
ouflak

11
Il semble un peu étrange de voir le mot «application» utilisé dans ce contexte (un fichier batch)
Adrian Grigore

ça ne marche pas pour moi. ne fonctionne qu'à partir du deuxième lancement lorsque «set» a été élaboré / enregistré dans l'environnement.
ses

13

pausela commande est ce que vous recherchez. Si vous recherchez UNIQUEMENT le cas lorsque vous appuyez sur Entrée, vous pouvez abuser de la runascommande:

runas /user:# "" >nul 2>&1

L'écran sera gelé jusqu'à set/p=ce que vous appuyiez sur Entrée. Ce que j'aime plus que si vous appuyez sur d'autres boutons que Entrée, ils ne seront pas affichés.


4

Vous pouvez le faire avec la pausecommande, exemple:

dir
pause
echo Now about to end...
pause

1
pauseest en effet la seule réponse valable pour MS-DOS(toutes les autres réponses fonctionnent cmduniquement). Donc, votre réponse est en fait la seule complètement correcte pour cette question spéciale (bien qu'elle ait déjà été suggérée plus de 7 ans auparavant)
Stephan

3

Selon le système d' exploitation que vous utilisez, si vous êtes flexible, alors CHOICEpeut être utilisé pour attendre presque une touche EXCEPTentrer

Si vous faites vraiment référence à ce que Microsoft insiste pour appeler "Invite de commandes" qui est simplement un émulateur MS-DOS, alors peut TIMEOUT- être peut - être convenir à votre objectif ( timeout /t -1attend sur n'importe quelle touche, pas seulement ENTER) et bien sûr CHOICEest à nouveau disponible dans les dernières éditions WIN.

Et un avertissement sur SET /P- alors que set /p DUMMY=Hit ENTER to continue...cela fonctionnera,

set "dummy="
set /p DUMMY=Hit ENTER to continue...
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed)

détectera si juste ENTER ou autre chose, se terminant par ENTER a été saisi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.