2015-07-21 38 views
2

我正在查找例如powershell/cmd中的代碼,以在下載速度低於5 mbps時終止進程。在下載速度下降時在窗口中殺死進程

情況是我使用VLC mediaplayer做直播。通常情況下,廣播發生故障或者開始擁堵。

解決方案是重新啓動。但是,只有當有人抱怨無法連接時,我纔會重新啓動它。

我正在尋找一個腳本/代碼來監視這個過程,並在下載速度低於某個水平或不一致時自動重啓/關閉它。

回答

0

言下之意VLC從磁盤讀取的內容和速度,你可以使用一個盤的讀取速度處理性能計數器1秒測定其出站網絡速度相匹配:

@echo off 
setlocal enableDelayedExpansion 

set LIMIT=500000 
set PROCESS=VLC 

:LOOP 
set line=0 
for /f "delims=, tokens=2" %%a in ('typeperf -sc 1 "\Process(%PROCESS%)\IO Read Bytes/sec"') do (
    set /a line+=1 
    if !line!==2 (
     set speed=%%a 
     set speed=!speed:"=! 
     for /f "delims=. tokens=1" %%b in ("!speed!") do set speed=%%b 
     if !speed! LSS %LIMIT% (
      taskkill /f /im %PROCESS%.exe 
      call RUN-VLC.bat 
     ) 
    ) 
) 
goto LOOP 

假設5Mbps的是500kbps的所述LIMIT相應地設置到500000

+0

感謝您的回覆,但它是一項IO活動的網絡活動。所以實際上沒有任何東西被存儲或寫入光盤。如果這個檢查可以通過網絡適配器執行,或者它可以執行。但是如果我查看taskmanager,VLC只有網絡沒有IO活動。 – Sambir

+0

如果VLC是使用網絡帶寬的唯一過程,那麼只應更改計數器名稱,這很簡單。 – wOxxOm

+0

櫃檯名稱應該改成什麼?而且vlc不是唯一使用bandwith的應用程序,因此它應該是特定於應用程序的。 – Sambir