管理公司的网上问题一定是很多管理员觉得头痛的事吧。当然我也不列外了,只要碰到几个不听话的员工,那就头疼啦,本来才3M的企业商业宽带,跑50多台PC,只要这50个人中间有2个人下载,势必影响公司的整体上网速度,那怎么办呢?使用P2P终结者,可以起到一定的效果,再者就是使用像我们公司一样的《深信服上网行为管理设备》了,不过不是一般的企业会买的起的哦,2W哦。不过这个设备还真的不是它说的那么理想!限制所有网速上传只有15K,下载最大50K,有时候还是会发现上网速度特别慢的情况,所以我就有想法了!如果我做一个可以实现监控网络速度的批处理来,实时监控网络的状态,那启不是很好吗?(其实这个想法早就有的,只是一直没做而已),好了动手,下面是两个版本的批处理,一个是我自己亲手写的,还有一个是借鉴网上别人写的,然后修改的,哈哈,我自己写的跟别人写的东西确实是差之千里啊,但是效果跟功能都一样。终于看到自己与比人的差距了,本来写完了这个批处理之后,想命名个好听的名字,然后去网上搜下有没有结果就搜到了下面的第二个版本了,好了。先说下我写这个批处理的思路吧。首先我根据的是ping域名的返回延迟结果来判断当前的网速是否为正常状态,正常状态是100MS为最正常的状态,而我们公司的话一般200—300ms那就算它是正常的吧。而到了700—800ms以上的话,那就是极为不正常了。肯定有人在下载东西,这个时候呢,就要通过批处理和messager服务来自动告诉管理员,嗯,有人在下载东西快去处理吧,这样管理员就会实时知道公司的网络情况了。所以根据这个思路,把我下面写的批处理贴出来给大家瞧瞧!呵呵。把下面文字保存为 网络检测.bat 就可以了。如果您觉得难得复制的话呢,直接点击这里下载就是啦。


@echo off
color 0a
MODE con: COLS=60 LINES=10
title 网速检测器——网络管理员必备批处理 『罗斌制作』 QQ:287727615
:start
setlocal ENABLEDELAYEDEXPANSION
ping www.sina.com >c:\1.txt
::从1.txt里面裁取出含有time的行。
findstr "time" "c:\1.txt"  >>c:\new1.txt
::将time=前面的所有字符全部删除,并把结果重定向到new2.txt。
for /f "delims=" %%i in (c:\new1.txt) do set str=%%i&call,echo %%str:~39%% >>c:\new2.txt
::将TTL替换为空格并把结果重定向到test1.txt。
for /f "delims=" %%i in ('type c:\new2.txt') do (
    set str=%%i
    set "str=!str:TTL= !"
    echo !str!>>c:\test1.txt)
)
:::将56替换为空格并把结果重定向到test2.txt。
for /f "delims=" %%i in ('type c:\test1.txt') do (
    set str=%%i
    set "str=!str:56= !"
    echo !str!>>c:\test2.txt)
)
::去掉最后一行字符,并把结果重定向到test3.txt。
for /f "delims=" %%i in ('type c:\test2.txt ^| findstr "="') do (
    set str1=%%i
    set "str2=!str1:str1= !"
    echo !str2!>>c:\test3.txt)
)
:::将ms替换为空格并把结果重定向到test4.txt。
for /f "dalims=" %%i in ('type c:\test3.txt') do (
    set str=%%i
    set "str=!str:ms= !"
    echo !str!>>c:\test4.txt)
)
::比较出最大延迟的最大值和最小值,当最大值超过700ms的时候,
::使用net send给管理员发送网络不正常的消息!!!
@echo off&setlocel enabledelayedexpansion
for /f %%i in (c:\test4.txt) do (
  if not defined b set b=%%i
  if %%i GTR !a! set a=%%i
  if %%i LSS !b! set b=%%i
)
::echo !b! >c:\test5.txt &echo !a! >>c:\test5.txt
::发送消息和删除生成的临时文件。然后延迟300秒后再次跳到start执行
::以达到实时监控网络是否正常的目的!
if %a% GEQ 700  net send 192.168.1.30 网络不正常,可能有人下载,请管理员采取措施!!!
::start c:\info.html
del c:\1.txt
del c:\new1.txt
del c:\new2.txt
del c:\test1.txt
del c:\test2.txt
del c:\test3.txt
del c:\test4.txt
echo 最小网络延迟为:!b!&echo 最大网络延迟为:!a!
ping 127.0.0.1 -n 300 >nul
goto start
pause >nul




下面是我在网上搜的然后修改的批处理。呵呵,比我的短多了,功能一样!哎....

@echo off
MODE con: COLS=60 LINES=10
title 网速检测器——网络管理员必备批处理 『罗斌制作』 QQ:287727615
:start
set "url=www.baidu.com"
set "n=10"
echo 正在测试,请稍候...
for /f "tokens=1-4* delims==" %%a in ('ping /n %n% "%url%"^|find "Average"') do set "i=%%d" && goto :a
if "%i%"=="" cls & echo. & net sand 192.168.1.30 报告管理员您的网络掉线了,请立即检查您的网络......
pause>nul
:a
set "i=%i:ms=%"
set "i=%i: =%"
cls & echo ===平均Average: %i%ms=== & echo.
if %i% lss 500 (echo 网络连接正常) else net send 192.168.1.30 网络连接不正常,可能有人下载!请采取措施!&echo 网络连接不妥哦
ping -n 300 127.0.0.1 >nul
goto start
pause>nul



这些是网速正常的情况,如果网速不正常的时候,马上会提示:
当然要想有这个其实的话,管理员的机器一定要开启messager服务哦,不然是用不了net send命令的。



是不是很好呀。这个小巧的功能是不是很实用勒?


转载文章请标明:该文章转自 罗斌原创技术文章:http://luobin44.51.com 〖罗斌原创〗