2015-07-21 36 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