181 votes

Comment attendre dans un lot script ?

Duplicata possible :
Dormir dans un fichier batch DOS

J'essaie d'écrire un lot script et j'essaie d'attendre 10 secondes entre 2 appels de fonction. La commande :

sleep 10

Ne fait pas attendre le fichier batch pendant 10 secondes.

J'utilise Windows XP.

278voto

chakrit Points 29562

Vous pouvez envoyer un ping à une adresse qui n'existe sûrement pas et spécifier le délai d'attente souhaité :

ping 192.0.2.2 -n 1 -w 10000 > nul

Et puisque l'adresse n'existe pas, il attendra 10 000 ms (10 secondes) et reviendra.

  • Le site -w 10000 spécifie le délai d'attente souhaité en millisecondes.
  • Le site -n 1 indique à ping qu'il ne doit essayer que une fois (normalement, il devrait essayer 4 fois).
  • Le site > nul est ajouté pour que la commande ping n'affiche rien à l'écran.

Vous pouvez facilement créer vous-même une commande de sommeil en créant un fichier sleep.bat quelque part dans votre PATH et en utilisant la technique ci-dessus :

rem SLEEP.BAT - sleeps by the supplied number of seconds

@ping 192.0.2.2 -n 1 -w %1000 > nul

NOTE : L'adresse 192.0.2.x est réservée selon les règles suivantes RFC 3330 donc il n'existera certainement pas dans le monde réel. Citation de la spécification :

192.0.2.0/24 - Ce bloc est attribué à "TEST-NET" pour être utilisé dans la documentation et le code d'exemple. documentation et le code d'exemple. Il est souvent utilisé en conjonction avec avec les noms de domaine exemple.com ou exemple.net dans la documentation sur les protocole. Les adresses de ce bloc ne doivent pas apparaître sur l'Internet public. Internet public.

146voto

Gleb Points 1646

Vous feriez mieux d'appeler 127.0.0.1 . Le ping de Windows fait une pause d'une seconde entre les pings, donc si vous voulez faire une pause de 10 secondes, utilisez

ping -n 11 127.0.0.1 > nul

De cette façon, vous n'avez pas à vous soucier des retours anticipés inattendus (disons qu'il n'y a pas de route par défaut et que le 123.45.67.89 est instantanément connu pour être inaccessible).

136voto

Thomaschaaf Points 5901

J'ai trouvé la bonne commande à utiliser elle s'appelle timeout : http://www.ss64.com/nt/timeout.html

48voto

J'ai utilisé ceci

:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top

7voto

L3X0R Points 19

Qu'en est-il :

@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X