isto faz 10 seg. atraso:
timeout /t 10
então tente isso:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
timeout /t 10
goto loop
Eu tenho um arquivo em lotes:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
Como posso fazer esses dois comandos no Windows XP a cada 10 segundos?
isto faz 10 seg. atraso:
timeout /t 10
então tente isso:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
timeout /t 10
goto loop
Tente este:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping localhost -n 11 > nul
goto loop
O comando ping será executado por 10 segundos e toda a saída será redirecionada para o dispositivo NUL, o que significa que você não verá saída do comando ping. Funciona de fato como um comando "sleep" faria.
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top
Editar: Conforme mencionado nos comentários, SLEEP
não estará disponível em uma instalação normal. Você precisará de algo como o Windows 2003 Resource Kit, ou algum outro truque para simulá-lo (o truque de ping mencionado por Bruno), e notas para fazer isso podem ser encontradas aqui .
Solução mais precisa: pingar o host inexistente uma vez e definir o tempo limite
ping 1.0.0.0 -n 1 -w 10000 >nul
Mas gera tráfego parasita
Cheat:
Use este comando para pausar o lote por 10 segundos
escolha / n / t: c, < 10 > / c: cc
Agora, coloque-o em um loop interminável no lote e voilà!
Instale o Cygwin que disponibilizará sleep
e cron
(entre outras coisas).
abaixo, é uma maneira feia e bonita, um arquivo de lote do Windows - ele consome muito tempo de CPU para não fazer nada, mas faz o que você quer e é tão bom.
SETLOCAL EnableDelayedExpansion
::in seconds
set time2stop=10
:loop1
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
for /f "tokens=1,2* delims=:" %%i in ("!time!") do (
set hour1=%%i
set min1=%%j
set sec1=%%k
)
for /f "tokens=1* delims=," %%i in ("!sec1!") do (
set isec1=%%i
)
:loop2
for /f "tokens=1,2* delims=:" %%i in ("!time!") do (
set hour2=%%i
set min2=%%j
set sec2=%%k
)
for /f "tokens=1* delims=," %%i in ("!sec2!") do (
set isec2=%%i
)
set /a delta=3600*(!hour2!-!hour1!)+60*(!min2!-!min1!)+(!isec2!-!isec1!)
if !delta! geq !time2stop! goto end2
goto loop2
:end2
@echo on
goto loop1