ฉันมีไฟล์แบทช์:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ฉันจะทำสองคำสั่งเหล่านี้บน Windows XP ทุก ๆ 10 วินาทีได้อย่างไร
ฉันมีไฟล์แบทช์:
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ฉันจะทำสองคำสั่งเหล่านี้บน Windows XP ทุก ๆ 10 วินาทีได้อย่างไร
คำตอบ:
นี่ใช้เวลา 10 วินาที ล่าช้า:
timeout /t 10
ลองทำสิ่งนี้:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
timeout /t 10
goto loop
/t
หรือสำหรับการกดปุ่มใด ๆ - ที่สามารถปิดได้โดยส่ง/NOBREAK
param :)
ลองอันนี้:
:loop
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
ping localhost -n 11 > nul
goto loop
คำสั่ง ping จะดำเนินการเป็นเวลา 10 วินาทีและเอาต์พุตทั้งหมดจะถูกเปลี่ยนเส้นทางไปยังอุปกรณ์ NUL ซึ่งหมายความว่าคุณจะไม่เห็นผลลัพธ์จากคำสั่ง ping มันใช้งานได้จริงตามคำสั่ง "sleep"
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top
แก้ไข:ดังที่กล่าวไว้ในความคิดเห็นSLEEP
จะไม่สามารถใช้ได้ในการติดตั้งปกติ คุณจะต้องสิ่งที่ต้องการทรัพยากร Kit การ Windows 2003 หรือบางส่วนเคล็ดลับอื่น ๆ มันแกล้ง (เคล็ดลับการ Ping บรูโน่กล่าวถึง) และบันทึกจะทำเช่นนั้นสามารถพบได้ที่นี่
choice
มันอาจไม่รวมอยู่ในมาตรฐาน ฉันจะดูมันมากกว่านี้
โซลูชันที่แม่นยำยิ่งขึ้น ping โฮสต์ที่ไม่มีอยู่หนึ่งครั้งและตั้งค่าการหมดเวลา
ping 1.0.0.0 -n 1 -w 10000> nul
แต่มันสร้างทราฟฟิกของปรสิต
คุณสามารถใช้คำสั่งfor
และ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
)
คุณสามารถใช้ping -n [secs+1] localhost >nul
เพื่อรอเวลาในหน่วยวินาที
goto
โดยไม่ต้องใช้
โกง:
ใช้คำสั่งนี้เพื่อหยุดชุดชั่วคราวเป็นเวลา 10 วินาที
ตัวเลือก / n / t: c, <10> / c: cc
ตอนนี้วางไว้ในวนไม่สิ้นสุดในแบทช์และvoilà!
ติดตั้งCygwinซึ่งจะให้บริการsleep
และcron
พร้อมให้คุณใช้ (เหนือสิ่งอื่นใด)
ด้านล่างเป็นทั้งชุดที่น่าเกลียดและสวยงามไฟล์ชุด Windows - ใช้เวลา cpu มากที่จะไม่ทำอะไรเลย แต่ทำในสิ่งที่คุณต้องการและดีมาก
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