Duplicata possible:
Comment dormir dans un fichier batch?
Voici une façon haxxorish de faire une pause d'une seconde dans un fichier batch:
PING 400.500.600.700 > NUL
J'ai googlé mais je ne suis pas sûr qu'il y en ait de meilleures .. des idées? :)
Vous pouvez utiliser les options "choix par défaut" et "délai d'attente" de la commande de choix intégrée pour créer un retard.
@echo off
echo Hi, I'm doing some stuff
echo OK, now I need to take a breather for 5 seconds...
choice /d y /t 5 > nul
echo Times up! Here I go again...
La façon correcte de procéder consiste à utiliser la commande timeout
, introduite dans Windows 2000.
Pour attendre 30 secondes:
timeout /t 30
Le délai d'attente serait interrompu si l'utilisateur appuie sur une touche; cependant, la commande accepte également le commutateur facultatif /nobreak
, qui ignore efficacement tout ce sur quoi l'utilisateur peut appuyer, à l'exception d'un CTRL-C
:
timeout /t 30 /nobreak
De plus, si vous ne voulez pas que la commande affiche son compte à rebours à l'écran, vous pouvez rediriger sa sortie vers NUL
:
timeout /t 30 /nobreak > NUL
@echo off
echo It is time for liftoff.
timeout /t 5
echo Commencing crash sequence.
timeout /t 5
Le fait de frapper une clé entraînera un dépassement du compte à rebours est le seul inconvénient.
Voici ce que j'utilise comme substitut de sleep.exe,
@ping -n 1 -w 1000 0.0.0.1 > NUL
Changement -n x
pour attendre (approximativement) x
secondes.
Apparemment le kit de ressources Windows contient la commande sleep. Autre Sites recommande également d'utiliser le choix .....
La commande CHOICE avec une minuterie fonctionne bien ...
CHOIX/C: x/T: x, 10> NUL
Il existe également des "programmes" que vous pouvez exécuter comme WAIT et SLEEP, etc.
J'espère que cela t'aides.
Le ping un (ci-dessus) est un bon - mais ne fonctionne que s'il est connecté à un réseau.
Un peu de script qui retardera est ci-dessous:
@Écho off
set/a secondsend =% TIME: ~ 6,2% + 10
if% secondsend% GTR 59 set/a secondsend = secondsend-60
:attends ici
si% TIME: ~ 6,2% NEQ% secondsend% goto waithere
Cela marquera une pause entre 9 et 10 secondes (la première seconde n'est pas précise en raison de l'utilisation de la commande TIME - et elle peut être à mi-chemin d'une seconde avant de commencer).
Si cela fonctionne en définissant 'secondsend' sur la seconde actuelle de l'horloge du PC, puis en y ajoutant 10 (le délai). S'il est supérieur à 59, il enlève 60 car il est bouclé à la minute suivante. Ensuite, il y a une boucle qui vérifie la seconde en cours avec 'secondsend' - une fois qu'ils correspondent au script continue.
Si vous voulez retarder d'une période différente de 2 à 59, modifiez le 10 dans la deuxième ligne (je dis 2 à 59 car la première seconde peut ne pas être une seconde complète, donc 2 pourrait être dit, 1,2 seconde par exemple).
Désolé, c'est si long, mais j'ai pensé expliquer le fonctionnement de la routine.