web-dev-qa-db-fra.com

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

Est-il possible dans un 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 suspende et attende que l'utilisateur appuie sur 'Entrée'

128
dr_rk

Il existe une commande pause qui le fait, 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 commande set pour demander une entrée utilisateur avec une variable fictive, comme par exemple:

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

208
abjuk

La commande pause est ce que vous recherchez. Si vous recherchez UNIQUEMENT le cas où enter est touché, vous pouvez abuser de la commande runas:

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

ce que j’aime plus que set/p= est que si vous appuyez sur d’autres boutons que vous entrez, ils ne seront pas affichés.

11
npocmaka

En fonction du système d'exploitation que vous utilisez, si vous êtes flexible, alors CHOICE peut être utilisé pour attendre presque n'importe quelle touche EXCEPT enter

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-être que TIMEOUT pourrait convenir à votre objectif (timeout /t -1 attend une clé, pas seulement ENTER) et bien sûr CHOICE est à nouveau disponible dans les éditions récentes de WIN.

Et un avertissement sur SET /P - alors que set /p DUMMY=Hit ENTER to continue... 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é entré.

2
Magoo