Comment attendre dans un script batch?

Duplication possible:

Dormir dans un fichier de commandes DOS

J’essaie d’écrire un script batch et d’essayer d’attendre 10 secondes entre 2 appels de fonction. La commande:

sleep 10 

N’attend pas le fichier de commandes pendant 10 secondes.

Je suis sous Windows XP.

Remarque: Il ne s’agit pas d’un doublon complet de Sleeping dans un fichier de commandes, car l’autre question concerne également Python, alors qu’il s’agit de fichiers de commandes Windows.

Vous pouvez envoyer une requête 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 comme l’adresse n’existe pas, elle attend 10 000 ms (10 secondes) et revient.

  • La partie -w 10000 spécifie le délai d’attente souhaité en millisecondes.
  • La partie -n 1 indique au ping qu’il ne devrait essayer qu’une seule fois (normalement, il essaierait 4 fois).
  • La partie > nul étant ajoutée, la commande ping ne génère aucun résultat à filtrer.

Vous pouvez facilement faire vous-même une commande de sumil en créant un 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 

REMARQUE: L’adresse 192.0.2.x est réservée conformément à la RFC 3330 , elle n’existera donc certainement pas dans le monde réel. Citant des spécifications:

192.0.2.0/24 – Ce bloc est assigné comme “TEST-NET” pour être utilisé dans la documentation et le code exemple. Il est souvent utilisé conjointement avec les noms de domaine example.com ou example.net dans la documentation du fournisseur et du protocole. Les adresses de ce bloc ne doivent pas apparaître sur l’Internet public.

Vous feriez mieux de faire un ping sur 127.0.0.1 . Windows ping s’arrête une seconde entre les pings pour que vous puissiez dormir pendant 10 secondes

 ping -n 11 127.0.0.1 > nul 

De cette façon, vous n’avez pas à vous soucier des retours anticipés inattendus (par exemple, il n’y a pas de route par défaut et le 123.45.67.89 est instantanément inaccessible).

En fait, j’ai trouvé la bonne commande à utiliser .. son délai d’attente: http://www.ss64.com/nt/timeout.html

J’ai utilisé ça

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

Qu’en est-il de:

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

Le sleep existe-t-il même sur votre Windows XP? Selon cet article: http://malektips.com/xp_dos_0002.html sleep n’est pas disponible sur Windows XP et vous devez télécharger le Kit de ressources Windows 2003 pour l’obtenir.

La réponse de Chakrit vous permet également de faire une pause.

Essayez d’exécuter sleep 10 partir d’une invite de commandes.