web-dev-qa-db-fra.com

Faire quelque chose toutes les 10 secondes dans un fichier batch

J'ai un fichier batch:

arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns

Comment puis-je exécuter ces deux commandes sous Windows XP toutes les 10 secondes?

21
steven

cela fait 10 secondes. retard:

timeout /t 10

alors essayez ceci:

 :loop
 arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
 ipconfig /flushdns
 timeout /t 10
 goto loop
30
Tony

Essaye celui-là:

:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping localhost -n 11 > nul
goto loop

La commande ping s'exécutera pendant 10 secondes et toute la sortie sera redirigée vers le périphérique NUL, ce qui signifie que vous ne verrez aucune sortie de la commande ping. Cela fonctionne en effet comme le ferait une commande "sleep".

19
Bruno Reis
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top

Éditer: Comme mentionné dans les commentaires, SLEEP ne sera pas disponible lors d'une installation normale. Vous aurez besoin de quelque chose comme le Kit de ressources Windows 2003 ou d'une autre astuce pour le simuler (l'astuce de ping mentionnée par Bruno), et des notes pour le faire peuvent être trouvées ici .

11
Doug Kavendek

Vous pouvez utiliser les commandes for et ping:

@echo off
for /l %%a in (0,0,0) do (
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping -n 11 localhost >nul
)

Vous pouvez utiliser ping -n [secs+1] localhost >nul pour attendre un certain temps en secondes.

1
Hayz

Une solution plus précise lance un ping sur un hôte inexistant une fois et fixe le délai

ping 1.0.0.0 -n 1 -w 10000> nul

Mais cela génère du trafic parasite

1
Mikhail Moskalev

Tricher:

Utilisez cette commande pour suspendre le lot pendant 10 secondes.

choix/n/t: c, <10>/c: cc

Maintenant, placez-le dans une boucle sans fin dans le lot et le tour est joué!

0
Dan McGrath

Installez Cygwin qui mettra sleep et cron à votre disposition (entre autres).

0
mob