Comment puis-je faire un fichier batch attendre / dormir pendant quelques secondes?

57

J'utilise un fichier de commandes pour démarrer quelques-uns des programmes dont j'ai besoin en arrière-plan. Jusqu'à présent, j'avais utilisé la commande pause pour l'exécuter après la fin des autres démarrages. Je préférerais utiliser les commandes wait ou sleep, mais elles ne semblent pas être incluses dans Windows 7.

Quelqu'un sait comment réintégrer ces commandes ou utiliser une autre méthode pour obtenir les mêmes résultats?

Cegorach
la source
1
Vous pouvez aussi utiliser powershell: stackoverflow.com/questions/1741490/…
Berzemus Le
Wish a été fourni par MS par défaut à partir de 2017 dans le dossier system32 ou dans les fichiers du programme / tout autre emplacement standard. Simple c exe 40k ou plus!
tgkprog
Comme celui-ci sleepcmd.com
tgkprog
Lot

Réponses:

30

Il existe de nombreux utilitaires de veille que vous pouvez télécharger et déposer dans votre dossier System32. L'un d'eux est fourni avec le Kit de ressources Windows Server 2003 appelé sleep.exe.

Vous pouvez également utiliser l'astuce de ping:

:sleep
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL

puis quelque part dans votre fichier batch, vous pouvez l'appeler comme suit:

CALL :sleep 1
John T
la source
1
le truc de ping pourrait être utilisé comme solution temporaire, mais je préférerais une solution qui vient de suspendre le processus, plutôt que de la laisser travailler à plein régime. En outre, lequel des éléments de cette liste que vous avez liés était ce que je cherchais?
Cegorach
Vous voulez sleep.exe
John T
J'ai essayé APPELER: dormir 1 à partir d'un fichier de lot de test et il a répondu "Le système ne trouve pas l'étiquette de lot spécifiée - SLEEP"
Cegorach, le
parce que vous devez ajouter le sous-programme que j'ai posté ci-dessus. Call appelle simplement le sous-programme, qui correspond aux 3 lignes que j'ai postées au-dessus de la commande call.
John T
126

Vous pouvez utiliser la timeoutcommande:

Cet utilitaire accepte un paramètre de délai d'attente pour attendre le délai spécifié (en secondes) ou jusqu'à ce qu'une touche soit enfoncée. Il accepte également un paramètre pour ignorer l'appui sur la touche.

Par exemple, pour attendre 10 secondes:

TIMEOUT /T 10

Pour plus de détails:

TIMEOUT /?
Alex S
la source
1
pourquoi n'est-ce pas choisi comme bonne réponse? l'actuel est tiré par les cheveux si vous me le demandez
Dany Khalife
7
@Dany: parce que le sujet date de 2009, alors que la plupart des installations étaient XP. Avant Vista, Timeout se trouvait uniquement dans les éditions de serveur et dans le Kit de ressources, pas dans une installation XP normale. De nos jours, en effet, la bonne réponse est Timeout.
mardi
6
@DanyKhalife Sauf si vous souhaitez exécuter le processus en arrière-plan. "ERREUR: la redirection d'entrée n'est pas prise en charge, ce qui permet de quitter le processus immédiatement."
Annan
8
timeout /t <seconds> /nobreak > NUL
Prichard
la source
Fonctionne très bien! calc && timeout 3 && notepad
Tamara Wijsman le
6

Il y a aussi

waitfor SomethingThatIsNeverHappening /t 10

Ce qui attendra entre 1 et 99999 secondes.

Volaille
la source
-1

Si Python est installé (et que vous avez ajouté le chemin d'installation à votre variable d'environnement), vous pouvez laisser Python faire le sommeil avec quelque chose comme:

echo from time import sleep; sleep(3) | python

(Si vous avez Windows Vista ou une version ultérieure, c'est timeoutnaturellement que vous devez aller.)

Un protecteur
la source