![]() |
中国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 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: 首先万分感谢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: 最好一开始就把自己的需要详细的描述清楚,否则有点浪费大家感情哦^_^ 因为每个域名后面可能有多台计算机,每次访问时通过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 |