Mam plik wsadowy:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
Jak mogę wykonać te dwa polecenia w systemie Windows XP co 10 sekund?
Mam plik wsadowy:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
Jak mogę wykonać te dwa polecenia w systemie Windows XP co 10 sekund?
Odpowiedzi:
to daje 10 sekund. opóźnienie:
timeout /t 10
więc spróbuj tego:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
timeout /t 10
goto loop
/t
OR dla naciśnięcia dowolnego klawisza - który można wyłączyć wysyłając /NOBREAK
parametr :)
Spróbuj tego:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping localhost -n 11 > nul
goto loop
Polecenie ping będzie wykonywane przez 10 sekund, a wszystkie dane wyjściowe zostaną przekierowane do urządzenia NUL, co oznacza, że nie zobaczysz żadnych danych wyjściowych z polecenia ping. Działa to rzeczywiście tak, jak komenda „uśpienia”.
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top
Edycja: Jak wspomniano w komentarzach, SLEEP
nie będzie dostępna w normalnej instalacji. Będziesz potrzebować czegoś takiego jak Windows 2003 Resource Kit lub innej sztuczki, aby to zasymulować (sztuczka ping, o której wspomina Bruno), a notatki na ten temat można znaleźć tutaj .
choice
że może nie być zawarte w standardzie. Przyjrzę się temu więcej.
Bardziej precyzyjne rozwiązanie uruchom ping nieistniejącego hosta i ustaw limit czasu
ping 1.0.0.0 -n 1 -w 10000> nul
Ale generuje ruch pasożytów
Możesz użyć poleceń for
i 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
)
Możesz użyć, ping -n [secs+1] localhost >nul
aby poczekać określony czas w sekundach.
goto
.
Oszukać:
Użyj tego polecenia, aby wstrzymać partia na 10 sekund
wybór / n / t: c, <10> / c: cc
Teraz umieść go w niekończącej się pętli w partii i voilà!
choice
przyszedł z XP i później, a przynajmniej nie widziałem go w żadnych ostatnich instalacjach.
poniżej, jest to zarówno brzydki, jak i piękny sposób, plik wsadowy Windows - zajmuje dużo czasu procesora, aby nic nie robić, ale robi to, co chcesz i jest tak miły.
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