中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:48
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于自动获取最快速的QQ服务器的问题
可打印版本  1,503 / 14
第1楼 youling126 发表于 2008-05-15 13:12
初级用户 发帖 42 积分 87
关于自动获取最快速的QQ服务器的问题
关于自动获取最快速的QQ服务器的问题

@ echo off
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
输入以上代码后可以手动从a.txt中找出最快速的QQ服务器,那么用什么代码能自动判别呢?????????????
第2楼 HAT 发表于 2008-05-15 13:33
版主 发帖 5,017 积分 9,023
QQlist.txt
sz.tencent.com
sz1.tencent.com
sz2.tencent.com
sz3.tencent.com
sz4.tencent.com
sz5.tencent.com
sz6.tencent.com
sz7.tencent.com


test.bat
第3楼 HAT 发表于 2008-05-15 13:36
版主 发帖 5,017 积分 9,023
我以前回帖的时候提到过,不同计算机ping的返回结果可能不同,因此代码可能需要做些细微的调整,楼主最好发帖时把自己ping的返回结果一并贴出。
第4楼 youling126 发表于 2008-05-15 17:59
初级用户 发帖 42 积分 87
Originally posted by HAT at 2008-5-15 01:36 PM:
我以前回帖的时候提到过,不同计算机ping的返回结果可能不同,因此代码可能需要做些细微的调整,楼主最好发帖时把自己ping的返回结果一并贴出。

首先万分感谢HAT兄!!
上次你回帖后我是有把结果贴上去的,可能你没看见
另外我还想问问,能不能把结果直接复制到剪切板
第5楼 youling126 发表于 2008-05-15 18:55
初级用户 发帖 42 积分 87
感谢HAT兄,顺利运行
我又做了点修改!!不过比较笨,还想麻烦给改一改!!!不甚感激
@echo off
ping sz.tencent.com > QQsev.txt
ping sz1.tencent.com >> QQsev.txt
ping sz2.tencent.com >> QQsev.txt
ping sz3.tencent.com >> QQsev.txt
ping sz4.tencent.com >> QQsev.txt
ping sz5.tencent.com >> QQsev.txt
ping sz6.tencent.com >> QQsev.txt
ping sz7.tencent.com >> QQsev.txt
type QQsev.txt | find "Pinging" >temp.txt
cd. >QQlist.txt
for /f "tokens=3 delims= " %%a in (temp.txt) do (echo %%a >>QQlist.txt)
set MinL=99
set MinT=9999ms
set Best=""
for /f "usebackq" %%a in ("QQlist.txt") do (
call :time %%a
)
echo 最佳服务器:%Best% >result.txt
echo 最佳服务器的响应时间:%MinT% >>result.txt
call result.txt
goto :eof

:time
for /f "skip=11 tokens=4 delims==" %%a in ('ping %1') do (
if "%%a" equ " 0ms" (
set /a Best=%1
) else (
call :best %%a %1
)
goto :eof
)

:best
for /f "skip=1 delims=:" %%a in ('^(echo %1^&echo.^)^|findstr /o ".*"') do set

nowlen=%%a
if "%nowlen%" lss "%MinL%" (
set /a MinL=%nowlen%
set MinT=%1
set Best=%2
) else if "%nowlen%" equ "%MinL%" (
if "%1" lss "%MinT%" (
set MinT=%1
set Best=%2
)
)
goto :eof

[ Last edited by youling126 on 2008-5-15 at 07:01 PM ]
第6楼 HAT 发表于 2008-05-15 20:11
版主 发帖 5,017 积分 9,023
我的建议是在批处理中生成QQlist.txt
如果你用ping生成QQsev.txt的话处理起来会比较麻烦
delims=不会以你想象的方式运行

第7楼 zqz0012005 发表于 2008-05-15 20:29
中级用户 发帖 135 积分 297
第8楼 terse 发表于 2008-05-15 21:07
银牌会员 发帖 946 积分 2,404
第9楼 HAT 发表于 2008-05-15 22:23
版主 发帖 5,017 积分 9,023
7楼
我觉得用ping -n 1的方法不太好,虽然看起来批处理执行的速度会大幅提高,但这样得到的结果可能是“不公平的”,我还是倾向于用ping然后取那个平均响应时间。
第10楼 youling126 发表于 2008-05-16 00:23
初级用户 发帖 42 积分 87
我得声明一下:我最终想要的是最快服务器的IP地址,所以才千辛万苦在前面加了那几段代码。本来可以直接在QQlist.txt写入每个服务器的IP地址,这样可以简化程序,但我发现好像服务器IP地址都不是固定的,会变的,也就要先获取每个服务器的IP地址,所以就有了前面那段代码来获取各服务器的IP地址,不过好像和后面配合不了,所以还想请各位大虾帮忙给改一改

[ Last edited by youling126 on 2008-5-16 at 12:29 AM ]
第11楼 youling126 发表于 2008-05-16 00:36
初级用户 发帖 42 积分 87
致8##
8楼的比较深奥,看不懂,能不能给解释解释
第12楼 HAT 发表于 2008-05-16 09:49
版主 发帖 5,017 积分 9,023
Originally posted by youling126 at 2008-5-16 12:23 AM:
我得声明一下:我最终想要的是最快服务器的IP地址,所以才千辛万苦在前面加了那几段代码。本来可以直接在QQlist.txt写入每个服务器的IP地址,这样可 ...

最好一开始就把自己的需要详细的描述清楚,否则有点浪费大家感情哦^_^
因为每个域名后面可能有多台计算机,每次访问时通过loadbalance把用户的请求指派到某一台。
可以先用ping -n 1 -l 1的方法获取一个IP列表,然后再在for里面依次ping这些IP来获取平均响应时间。
第13楼 youling126 发表于 2008-05-16 14:14
初级用户 发帖 42 积分 87
恕我愚昧,还是不明白,能不能具体一点
第14楼 HAT 发表于 2008-05-16 15:09
版主 发帖 5,017 积分 9,023
第15楼 terse 发表于 2008-05-16 16:01
银牌会员 发帖 946 积分 2,404
修改一下8楼 没测试
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023