Her 10 saniyede bir toplu iş dosyası yapın


24

Bir toplu iş dosyası var:

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

Bu iki komutu her 10 saniyede bir Windows XP'de nasıl yapabilirim?


3
Dakikada bire indirgemek için Windows Zamanlanmış Görevler'i kullanabilirsiniz.

Windows toplu işlemiyle mümkündür: aşağıdaki çözümüme bakın. tek sorun cpu kullanımı ...
kokbira

Yanıtlar:


36

bu 10 saniye yapar. gecikmesi:

timeout /t 10

bu yüzden şunu deneyin:

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

1
Son on yılda yapılan herhangi bir Windows sürümü için doğru yanıt (soruda belirtilen Windows XP dahil). Teşekkürler :-)
woot

Aslında -1 - 99 999 saniye (~~ 1day3,7h | windows7) - /therhangi bir tuşa basmak için OR'de belirtilen sayı - /NOBREAKparam göndererek kapatılabilir :)
jave.web

19

Bunu dene:

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

Ping komutu 10 saniye boyunca yürütülür ve tüm çıkış NUL aygıtına yönlendirilir, yani ping komutundan çıkış görmezsiniz. Gerçekten bir "uyku" komutu gibi çalışır.


11
:top
arp -s 192.168.1.254 xx-xx-xx-xx-xx-xx
ipconfig /flushdns
sleep 10
goto top

Düzenleme: Yorumlarda belirtildiği gibi, SLEEPnormal bir kurulumda kullanılamaz. Windows 2003 Kaynak Seti gibi bir şeye veya simüle etmek için başka bir numaraya ihtiyacınız olacak (ping hilesi Bruno bahsetti) ve bunun için notlar burada bulunabilir .


6
uyku varsayılan olarak dahil değildir. Bunu elde etmek için kaynak setine mi ihtiyacınız var?
marcc

Tam olarak neye ihtiyacım var?

Öyle değil mi? Güvenebileceğim bir şey olduğuna yemin edebilirdim, ama sanırım choicestandartlara dahil edilmemiş olabilir. Daha fazla inceleyeceğim.

1
Uyku komutunu "taklit etmek" için pencerelere başka bir şey yüklemenize gerek yoktur. Bir örnek için cevabıma bir göz atın.

1

Daha kesin çözüm varolmayan ana bilgisayara bir kez ping atın ve zaman aşımını ayarlayın

ping 1.0.0.0 -n 1 -w 10000> nul

Ancak parazit trafiği oluşturur


1

forVe pingkomutunu kullanabilirsiniz :

@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 >nulSaniye cinsinden belirli bir süre beklemek için kullanabilirsiniz .


1
Bu neden başka bir cevapta önerilenle aynı ping komutundan daha iyi?
RalfFriedl

Adil olmak gerekirse, bu sonsuz bir döngü kullanmayı kullanmadan gösteren ilk cevaptır goto.
Scott

0

Hile:

Toplu işi 10 saniye duraklatmak için bu komutu kullanın

seçim / n / t: c, <10> / c: cc

Şimdi, parti ve voilà'da hiç bitmeyen bir döngüye yerleştirin!


1
Veya, isterseniz, kaynak kitini indirin veya uyku 10 için basit bir program yazın. Ancak yöntemim, daha fazla yazılım indirmek zorunda kalmadan başka bir makineye taşıyabileceğiniz anlamına gelecektir.

choiceXP ve üstü ile geldiğini düşünmedim ya da en azından son yüklemelerde görmedim.

1
Bu dizüstü bilgisayarda vanilya Vista Home Premium kullanıyorum ve iyi çalışıyor.

windows xp için "seçim" yoktur !!!
kokbira

0

(Başka şeylerin yanı sıra) sizin için yapacak ve mevcut olacak Cygwin'i yükleyin .sleepcron


2
Sorduğu şey için aşırıya kaç!

-1

Aşağıda, hem çirkin hem de güzel bir yol, bir Windows toplu iş dosyası - hiçbir şey yapmak için çok fazla işlemci zamanı harcıyor, ancak istediğinizi yapıyor ve çok güzel.

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

başka bir yol da bazı döngü dizileri yapmaktır, örneğin tekrarlamak (/ 1, %% i için (1,1,65535) hiçbir şey = 0 yapmaz) ve bazen "kaç kez" test etmek için 10 saniye içinde sonuçlanır, hahaha. ama bu en çirkin yoldur.
kokbira

Ayrıca işlev olarak kullanmak için bazı Windows toplu iş oluşturabilirsiniz (bir zaman ayırmak, bir bekleme yapmak ...) ama daha karmaşık olacak ...
kokbira

Sanırım 23:59:51 - 23:59:59 arasında kullanırsanız bir hataya neden olur - bu durumda, parti sonsuza kadar bekleyecektir ... bazı "eğer" sorunu çözer ...
kokbira

sabit bir süre için test etmek istiyorsanız (bir süre + 10sn değil) "% time% geq 10:30 biterse" yapabilirsiniz. çözüm karmaşık oldu çünkü toplamı ...
kokbira

Aslında korkunç. Her şeyden önce, meşgul beklemek. CPU döngülerini gereksiz yere boşa harcamak asla iyi bir fikir değildir (gömülü donanımda olmadığı sürece). Bu aynı zamanda gece yarısı doğru şekilde çalışmaz.
Joey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.