Comment attendre dans un script batch? [dupliquer]

Double Possible:

Dormir dans un fichier batch DOS

j'essaie d'écrire un script par lots 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'exécute Windows XP.

Note: ce n'est pas un duplicata complet de dormant dans un fichier batch comme l'autre question Est au sujet aussi au sujet de python, alors qu'il s'agit de fichiers Windows batch.

146
demandé sur Community 2009-04-09 22:01:46

6 réponses

vous pouvez tracer une adresse qui n'existe sûrement pas et spécifier le délai désiré:

ping 192.0.2.2 -n 1 -w 10000 > nul

et comme l'adresse n'existe pas, elle attendra 10.000 ms (10 secondes) et reviendra.

  • la partie -w 10000 spécifie le délai d'attente désiré en millisecondes.
  • la partie -n 1 indique à ping qu'il ne devrait essayer qu'une fois (normalement il essaierait 4 fois).
  • la partie > nul est ajoutée pour que la commande ping ne sorte rien à l'écran.

vous pouvez facilement faire une commande de sommeil vous-même en créant un sommeil.bat quelque part dans votre chemin et utilisez 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: La 192.0.2.x adresse est réservé selon RFC 3330 de sorte qu'il n'existera certainement pas dans le réel monde. Citant le spec:

192.0.2.0 / 24 - ce bloc est affecté en tant que" test-NET " pour être utilisé dans documentation et exemple de code. Il est souvent utilisé en conjonction avec noms de domaine example.com ou example.net dans vendeur et protocole documentation. Les adresses dans ce bloc ne doivent pas apparaître sur le public Internet.

254
répondu chakrit 2013-02-21 05:05:38

Vous feriez mieux de ping 127.0.0.1 . Windows fait une pause ping pendant une seconde entre les pings donc si vous voulez dormir pendant 10 secondes, utilisez

ping -n 11 127.0.0.1 > nul

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

132
répondu Gleb 2009-04-09 19:30:11

j'ai trouvé la bonne commande à utiliser.. son timeout appelé: http://www.ss64.com/nt/timeout.html

118
répondu Thomaschaaf 2009-04-09 19:39:56

j'ai utilisé ce

:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top
42
répondu 2009-09-20 01:56:38

Ce sujet:

@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs
7
répondu L3X0R 2011-02-05 18:57:24

bien, est-ce que sleep existe même sur votre Windows XP box? Selon ce billet: http://malektips.com/xp_dos_0002.html sleep n'est pas disponible sur Windows XP, et vous devez télécharger le Windows 2003 Resource Kit afin de l'obtenir.

la réponse de Chakrit vous donne une autre façon de faire une pause, aussi.

Essayez d'exécuter sleep 10 à partir d'une invite de commande.

5
répondu easel 2011-02-11 08:16:26