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»

dr_rk
la source

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...

abjuk
la source
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.

npocmaka
la source
4

Vous pouvez le faire avec la pausecommande, exemple:

dir
pause
echo Now about to end...
pause
Vic_HT
la source
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.

Magoo
la source