Essayez le Choix commande. Elle existe depuis MSDOS 6.0 et devrait faire l'affaire.
Utilisez le paramètre /T pour spécifier le délai d'attente en secondes et le paramètre /D pour spécifier la sélection par défaut et ignorer le choix sélectionné ensuite.
La seule chose qui pourrait poser problème est que l'utilisateur tape l'un des caractères choisis avant la fin du délai d'attente. Une solution partielle consiste à obscurcir la situation - utiliser l'argument /N pour masquer la liste des choix valides et n'avoir qu'un seul caractère dans l'ensemble des choix afin qu'il soit moins probable que l'utilisateur tape un choix valide avant que le délai n'expire.
Vous trouverez ci-dessous le texte d'aide de Windows Vista. Je pense que c'est la même chose sous XP, mais regardez le texte d'aide sur un ordinateur XP pour vérifier.
C:\>CHOICE /?
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
Description:
This tool allows users to select one item from a list
of choices and returns the index of the selected choice.
Parameter List:
/C choices Specifies the list of choices to be created.
Default list is "YN".
/N Hides the list of choices in the prompt.
The message before the prompt is displayed
and the choices are still enabled.
/CS Enables case-sensitive choices to be selected.
By default, the utility is case-insensitive.
/T timeout The number of seconds to pause before a default
choice is made. Acceptable values are from 0 to
9999. If 0 is specified, there will be no pause
and the default choice is selected.
/D choice Specifies the default choice after nnnn seconds.
Character must be in the set of choices specified
by /C option and must also specify nnnn with /T.
/M text Specifies the message to be displayed before
the prompt. If not specified, the utility
displays only a prompt.
/? Displays this help message.
NOTE:
The ERRORLEVEL environment variable is set to the index of the
key that was selected from the set of choices. The first choice
listed returns a value of 1, the second a value of 2, and so on.
If the user presses a key that is not a valid choice, the tool
sounds a warning beep. If tool detects an error condition,
it returns an ERRORLEVEL value of 255. If the user presses
CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
of 0. When you use ERRORLEVEL parameters in a batch program, list
them in decreasing order.
Examples:
CHOICE /?
CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "Select a for option 1 and b for option 2."
CHOICE /C ab /N /M "Select a for option 1 and b for option 2."
27 votes
Réponse rapide pour les personnes qui atterrissent ici : il existe une solution native depuis Windows Vista :
TIMEOUT
. Références : SS64 , Rob van der Woude .3 votes
Il y a délai d'attente qui attend des secondes. Dans le cas où une attente de quelques millisecondes est nécessaire, la commande powershell Démarrage-Sommeil peut être utilisé. Pour dormir 50ms dans cmd :
powershell Start-Sleep -m 50
0 votes
@Pavel : Vous pouvez également abuser d'un ping vers un hôte inexistant pour dormir pendant des millisecondes.
0 votes
Un bon résumé des différentes techniques pour arrêter un processus de fichier batch : robvanderwoude.com/wait.php
12 votes
Essayez ceci :
timeout /t 5 /nobreak >nul
0 votes
Juste pour le plaisir, si vous avez installé Node.js, vous pouvez utiliser
node -e 'setTimeout(a => a, 5000)'
il fonctionne sur Mac avec Node v12.14.0 et probablement aussi sur Windows0 votes
Une autre option encore :
powershell "Sleep 3"