Comment suspendre temporairement l'exécution d'un fichier batch Windows entre une commande et la suivante?
windows
batch-file
batch
Massimo
la source
la source
Réponses:
La bonne façon de dormir dans un fichier de commandes consiste à utiliser la
timeout
commande introduite dans Windows 2000.Pour attendre quelque part entre 29 et 30 secondes :
Le délai d'attente serait interrompu si l'utilisateur appuyait sur une touche quelconque. Cependant, la commande accepte également le commutateur optionnel
/nobreak
, qui ignore en réalité tout ce sur quoi l'utilisateur peut appuyer, à l'exception d'un expliciteCTRL-C
:De plus, si vous ne souhaitez pas que la commande affiche son compte à rebours à l'écran, vous pouvez rediriger sa sortie vers
NUL
:la source
Comme cela s'applique ici aussi, je vais copier ma réponse depuis un autre site .
Si vous voulez utiliser ping, il existe un meilleur moyen. Vous voudrez envoyer une requête ping à une adresse inexistante afin de pouvoir spécifier un délai d'expiration avec une précision à la milliseconde. Heureusement, une telle adresse est définie dans une norme (RFC 3330), et elle l’est
192.0.2.x
. Ce n'est pas inventé, c'est vraiment une adresse dont le seul but est de ne pas exister (ça peut ne pas être clair, mais ça s'applique même dans les réseaux locaux):Pour dormir pendant 123 millisecondes, utilisez
ping 192.0.2.1 -n 1 -w 123 >nul
la source
Ping
est tout simplement le mauvais outil pour le travail.Vous pouvez également insérer un ping à localhost. Cela prendra 4 secondes pour terminer (par défaut). Certains le considèrent comme un béguin, mais cela fonctionne quand même très bien.
La commande:
ping 127.0.0.1
la source
ping
votre système d'exploitation est fourni ou non . Si vous êtes assez inquiet pour '95 '98 ou ME, vous devriez être tout aussi inquiet pour 6.22 qui n'a pas nonping
plusDéni de responsabilité : ce n'est pas la solution "idéale", alors ne vous donnez pas la peine de me faire taper à la tête avec ça, comme c'est le cas pour ceux qui recommandent
ping
...Si possible, utilisez
timeout
à coup sûr. Mais comme indiqué dans les commentaires, ce n'est pas toujours une option (par exemple en mode non interactif). Après cela, je conviens que leping
"kludge" est peut-être la meilleure option, car il est très simple. Cela dit, je propose une autre option ... intégrer un script VB .La base de cette solution a toutes sortes d’applications. Souvent, VBS peut faire des choses que le lot ne peut pas, ou du moins le faire avec beaucoup plus de facilité. En utilisant la technique illustrée ici, vous pouvez mélanger les deux (pas "de manière transparente", mais "de manière fonctionnelle" ...).
Voici un one-line pour créer un script temporaire, l'exécuter, puis le supprimer. Le script veille pour vous (pendant 3 secondes dans cet exemple).
Voici fondamentalement la même chose, écrite un peu différemment:
Et puis finalement, comme
ping
, aCScript
lui - même une option de délai d'attente! Ainsi, si vous entrez une boucle infinie dans le script, vous pouvez laisser l'interprète appliquer la durée. Notez que ceci est une opération "occupée", qui consomme le processeur, et par conséquent, je ne le recommande pas lorsque vous pouvez utiliser laWScript.Sleep
procédure, mais je le présente comme une option conceptuelle par souci d'exhaustivité:la source