Ho un file batch:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
Come posso eseguire questi due comandi su Windows XP, ogni 10 secondi?
Ho un file batch:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
Come posso eseguire questi due comandi su Windows XP, ogni 10 secondi?
Risposte:
questo fa 10 secondi. ritardo:
timeout /t 10
quindi prova questo:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
timeout /t 10
goto loop
/t
O per premere qualsiasi tasto - che può essere disattivato inviando /NOBREAK
param :)
Prova questo:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping localhost -n 11 > nul
goto loop
Il comando ping verrà eseguito per 10 secondi e tutto l'output verrà reindirizzato al dispositivo NUL, il che significa che non verrà visualizzato alcun output dal comando ping. Funziona davvero come farebbe un comando "sonno".
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top
Modificare: Come menzionato nei commenti, SLEEP
non sarà disponibile in un'installazione normale. Avrai bisogno di qualcosa come il Resource Kit di Windows 2003, o qualche altro trucco per simularlo (il trucco del ping di Bruno cita), e le note per farlo possono essere trovate Qui .
choice
potrebbe non essere incluso dallo standard. Lo esaminerò di più.
Una soluzione più precisa esegue il ping di un host inesistente una volta e imposta il timeout
ping 1.0.0.0 -n 1 -w 10000 & gt; nul
Ma genera traffico parassita
Truffare:
Utilizzare questo comando per mettere in pausa il batch per 10 secondi
scelta / n / t: c, & lt; 10 & gt; / c: cc
Ora mettilo in un loop infinito nel batch e voilà!
choice
è arrivato con XP e successivi, o almeno non l'ho visto su nessuna installazione recente.
di seguito, è sia un modo brutto e bello, un file batch di Windows - consuma un sacco di tempo della CPU per non fare nulla, ma fa quello che vuoi ed è così bello.
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