157 votes

Dormir dans un fichier batch

Lors de l'écriture d'un fichier batch pour automatiser quelque chose sur une zone de Windows, j'ai eu besoin de prendre une pause dans son exécution pendant plusieurs secondes (généralement dans un test/boucle d'attente, en attente d'un processus de départ). À l'époque, la meilleure solution que j'ai pu trouver utilise ping (je ne plaisante pas) pour obtenir l'effet désiré. J'ai trouvé une meilleure écriture-up de il ici, qui décrit un callable "attendre.chauve-souris", mis en œuvre comme suit:

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

Vous pouvez ensuite inclure des appels à attendre.chauve-souris dans votre propre fichier de commandes, en passant le nombre de secondes à attendre.

Apparemment, Windows 2003 Resource Kit fournit un Unix-like commande de mise en veille (enfin!). En attendant, pour ceux d'entre nous utilisent encore Windows XP, Windows 2000 ou (malheureusement) de Windows NT, est-il un meilleur moyen?

J'ai modifié l' sleep.py script dans la accepté de répondre, de sorte que la valeur par défaut est une seconde si aucun argument n'est passé sur la ligne de commande:

import time, sys

time.sleep(float(sys.argv[1]) if len(sys.argv) > 1 else 1)

235voto

Blorgbeard Points 38991

Le `` commande est disponible à partir de Vista à partir.

Remarque : Ne fonctionne pas avec la redirection d’entrée - exemple trivial :

21voto

daniel Points 349

À l'aide de l' ping méthode décrite est de savoir comment je le fais quand je ne peux pas (ou ne veulent pas) ajouter plus de fichiers exécutables ou d'installer d'autres logiciels.

Vous devez être une requête ping à quelque chose qui n'est pas là, et à l'aide de l' -w drapeau alors qu'il échoue au bout de ce laps de temps, pas de ping quelque chose qui est là (comme localhost) -n temps. Cela permet de gérer le temps de moins d'une seconde, et je pense que c'est un peu plus précis.

par exemple

(test 1.1.1.1 n'est pas pris)

ECHO Waiting 15 seconds

PING 1.1.1.1 -n 1 -w 15000 > NUL
  or
PING -n 15 -w 1000 127.1 >NUL

18voto

tzot Points 32224

Si vous avez installé Python, ou n'avez pas l'esprit de l'installer (il a d'autres utilisations aussi :), il suffit de créer le suivant sleep.py script et l'ajouter quelque part dans votre CHEMIN:

import time, sys

time.sleep(float(sys.argv[1]))

Il permettra à des sous-deuxième pauses (par exemple, 1,5 s, 0.1, etc), si vous avez un tel besoin. Si vous voulez l'appeler en tant que sleep plutôt que d' sleep.py, alors vous pouvez ajouter l' .PY extension à votre variable d'environnement PATHEXT. Dans windows XP, vous pouvez le modifier en:

Mon Ordinateur → Propriétés (menu) → Avancé (onglet) → les Variables d'Environnement (bouton) → les variables du Système (image)

16voto

Luk Points 2602

``est inclus dans les Kits de ressources plus par exemple Le Kit de ressources Windows Server 2003 qui peut être installé sur Windows XP trop.

15voto

Aacini Points 19316

Je suis en désaccord avec les réponses que j’ai trouvé ici.

J’utilise la méthode suivante entièrement basée sur les fonctionnalités de Windows XP pour faire un retard dans un fichier batch :

RETARD. BAT :

Vous pouvez également insérer le jour dans le calcul afin que la méthode fonctionne également lorsque l’intervalle de délai passer minuit.

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