批处理测速

分类:苦逼猿 标签:编程

    测速的方法应该很多, 软件应该也不胜枚举, 想起来如果写个程序的话说不定比这破批处理好简单好多....
    东查西查终于写出了这个批处理脚本.
注!!! 此批处理仅用于Windows 7中文系统.
    其他目测不行, 原因是ping的时候输出不一样, 会造成解析字串失败.

    Win7的ping输出形式如下:
C:\>ping 8.8.8.8 -l 1

正在 Ping 8.8.8.8 具有 1 字节的数据:
来自 8.8.8.8 的回复: 字节=1 时间=486ms TTL=37
来自 8.8.8.8 的回复: 字节=1 时间=366ms TTL=37
来自 8.8.8.8 的回复: 字节=1 时间=599ms TTL=37
来自 8.8.8.8 的回复: 字节=1 时间=460ms TTL=37

8.8.8.8 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 366ms,最长 = 599ms,平均 = 477ms

    说一下这个脚本的功能吧, 检测IP, 根据ping值平均值排序, ping不通或者有问题的加[Failed], 并排在最底部.
    所需的文件:
  1. 本批处理, 例如 AutoPing.bat.
  2. 记录IP的源文件, 文件名必须为 IPs.txt, 每行一个IP.
  3. AutoPing.bat和IPs.txt文件在同步目录下,并且该目录有读写权限.
    运行AutoPing.bat后, 自动ping每一个IP, 并将ping结果的平均值作为排序依据, 进行排序, 结果保存在同目录下的 Result.bat 文件中.
    代码:
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem color 1a
if exist Result.txt (
	echo Result.txt 已经存在!
	echo 为确保准确性,请手工删除!
	goto end
)

set total=0
for /f "eol=; tokens=* delims=" %%a in (IPs.txt) do (
	set bSuccess=0
	set /a total+=1
	for /f "tokens=1,2,3,* delims==" %%i in ('ping -l 1 %%a^|findstr "平均"') do (
		set bSuccess=1
		echo %%a	平均速度:%%l
		echo %%l %%a>>tmp~.txt
	)
	if /i !bSuccess! equ 0 (@echo %%a	[Failed]) 
	if /i !bSuccess! equ 0 (@echo %%a	[Failed] >>err~.txt) 
)

set num=0
for /f "tokens=1,2 delims=ms" %%a in (tmp~.txt) do (
	set n!num!=%%a
	set m!num!=%%b
	set /a num+=1
)
rem ===============================对结果进行排序====================================
rem echo 正在进行排序...
set /a num-=1
set /a he=%num%
:dosort
set /a he-=1
if %he% lss 1 goto :breaksort
set flag=0
for /l %%c in (0,1,%he%) do (
	set /a nx=%%c+1
	call set nxnum=%%n!nx!%%
	if !n%%c! gtr !nxnum! set th=!n%%c!&set n%%c=!nxnum!&set n!nx!=!th!&&set flag=1
)
if !flag! equ 0 goto :breaksort
goto :dosort
:breaksort
for /l %%i in (0,1,%num%) do (
	call echo.%%n%%i%%ms%%m%%i%%>>tmp~~.txt
)
rem sort tmp~.txt>>tmp~~.txt
del /Q tmp~.txt
rem ---------------------------------------------------------------------------------

for /f "tokens=1,2 delims= " %%a in (tmp~~.txt) do (
	echo %%b	平均速度:%%a>>Result.txt
)
del /Q tmp~~.txt

for /f "tokens=* delims=" %%a in (err~.txt) do (
	echo %%a>>Result.txt
)
del /Q err~.txt

title 检测完成!
echo 总主机数量:!total!!
echo 所有检测完成!
echo 检测结果保存在 Result.txt 中!
:end
pause

默认是每IP ping 4个结果, 1秒超时, ping包大小是1, 不满意请按需调整~~
XP或者其他Windows系统可能要修改解析字串的部分~
_(:з」∠)_
你可能还会对下列文章感兴趣:

2条评论 你不想来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?

    您需要登录您的Google账号才能进行评论。