![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-13 14:26 |
共 47,812 主题排行 / 349,916 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]对ip段的整合,涉及超多次比较! |
| 可打印版本 3,277 / 40 |
| 第31楼 exzzz | 发表于 2009-01-11 17:17 |
| 初级用户 发帖 167 积分 194 | |
|
明年开始我就不做移动的代维了,项目解散了,组员都走了。就剩下我了,boss说要调我去国税让我跟其他网络工程师学习网络,要学的东西可就多了。不过我也正好要学这方面。就好像算法里面的 IP换算成10进制一样,呵呵,昨晚还去翻了本CCNA的书才知道的。
|
|
| 第32楼 netbenton | 发表于 2009-01-12 01:42 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
我来追加一个(全精度的),16秒完成 @echo off
SETLOCAL ENABLEDELAYEDEXPANSION title IP分段工具,开始时间是 %time% cd. >分段结果.txt set n= set _h1=1 echo.&echo.&echo.&echo. for /f "tokens=1-8,* delims=. " %%a in (ipdata.txt) do ( set _cu=0&set _e1=!_e!&set _f1=!_f!&set _g1=!_g!&set/a _h1=_h+1 if !_h!==255 (set _h1=0&set /a _g1=_g+1&if !_g!==255 (set _g1=0&set /a _f1=_f+1&if !_f!==255 (set _f1=0&set /a _e1=_e+1))) if "!_from!"=="" set _from=%%a.%%b.%%c.%%d if not !_e1!!_f1!!_g1!!_h1!==%%a%%b%%c%%d (if not "!_e!"=="" (echo !_from! !_e!.!_f!.!_g!.!_h! !_fi!>>分段结果.txt&set _from=%%a.%%b.%%c.%%d)) set _e=%%e&set _f=%%f&set _g=%%g&set _h=%%h set _fi=%%i set /a n+=1 set /p = 当前记录:!n!<nul ) echo. echo ******************** echo 结束时间是:%time% echo ******************** pause [ Last edited by netbenton on 2009-1-12 at 01:54 ] |
|
| 第33楼 cz1314 | 发表于 2009-01-12 05:50 |
| 初级用户 发帖 43 积分 64 | |
|
思路很牛b 思路很牛b
但是我不需要全精度的, 最合适的精度是 C 段 的差 小于100 就整合,大于100 分开。 ------------ A1.B1.C1.D1 A2.B2.C2.D2 A3.B3.C3.D3 A4.B4.C4.D4 ------------------- 也就是当 A2.B2 = A3.B3 的时候比较 C2和C3 当 C2-C3<=100 的时候 2段整合为:A1.B1.C1.D1 A4.B4.C4.D4 如果 C2-C3>100 不整合。 这是最适合的精度。。 |
|
| 第34楼 cz1314 | 发表于 2009-01-12 05:52 |
| 初级用户 发帖 43 积分 64 | |
|
全精度的代码执行起来需要很厂时间,大概有400万条数据处理。
这是我修改 exzzz 发出的代码 处理完400万条数据在 10分钟以内 全精度的好象需要几个小时 [ Last edited by cz1314 on 2009-1-12 at 05:55 ] |
|
| 第35楼 exzzz | 发表于 2009-01-12 12:05 |
| 初级用户 发帖 167 积分 194 | |
Originally posted by netbenton at 2009-1-12 01:42 AM: 呵呵,我测试了一下,在我这台赛扬2.66的机器上, 将你我代码中所有有关 计数及屏显 的提示内容 rem 掉运行处理楼主提供的IPDATA.TXT。 你的算法需要14.3秒,我的算法用7.9秒。。。。。。 |
|
| 第36楼 netbenton | 发表于 2009-01-12 20:09 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
我的处理纯真网络解压出来的ip数据36万多条记录(全精度)
用时04:41秒 结果只有一条: 0.0.0.0 255.255.255.255 纯真网络 2009年1月10日IP数据 [ Last edited by netbenton on 2009-1-12 at 20:16 ] |
|
| 第37楼 cz1314 | 发表于 2009-01-13 00:43 |
| 初级用户 发帖 43 积分 64 | |
|
哈哈! netbenton 真幽默。你的代码的确不错!!!
|
|
| 第38楼 exzzz | 发表于 2009-01-13 10:02 |
| 初级用户 发帖 167 积分 194 | |
Originally posted by netbenton at 2009-1-12 08:09 PM: 呵呵,我的也是。 |
|
| 第39楼 netbenton | 发表于 2009-01-13 15:11 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
那这样的也不整合吗? 1.0.0.15 1.1.255.255 1.2.0.0 1.2.12.17 |
|
| 第40楼 netbenton | 发表于 2009-01-13 15:20 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
大提速 ::全精度比较
::处理楼主的ipdata.txt 用5秒,处理纯真的36万数据用1分17秒 ::如果是400万数据,预计:13分左右 @echo off SETLOCAL ENABLEDELAYEDEXPANSION title IP分段工具,开始时间是 %time% cd. >分段结果.txt set n=0 call :sub echo.&echo.&echo.&echo. for /f "tokens=1-8,* delims=. " %%a in (ipdata.txt) do ( if !_h!==256 (set _h=0&set /a _g+=1&if !_g!==256 (set _g=0&set /a _f+=1&if !_f!==256 (set _f=0&set /a _e+=1))) if not !_e!!_f!!_g!!_h!==%%a%%b%%c%%d (echo !_fr! !_end!>>分段结果.txt&set _fr=%%a.%%b.%%c.%%d) set _end=%%e.%%f.%%g.%%h set _e=%%e&set _f=%%f&set _g=%%g&set/a _h=%%h+1 ) if not "!_g!"=="" echo !_fr! !_end!>>分段结果.txt echo ******************** echo 结束时间是:%time% echo ******************** pause goto :eof :sub for /f "tokens=1-8,* delims=. " %%a in (ipdata.txt) do ( set _fr=%%a.%%b.%%c.%%d set _e=%%a&set _f=%%b&set _g=%%c&set _h=%%d goto :eof ) [ Last edited by netbenton on 2009-1-15 at 20:46 ] |
|
| 第41楼 cz1314 | 发表于 2009-01-14 00:29 |
| 初级用户 发帖 43 积分 64 | |
Originally posted by netbenton at 2009-1-13 03:11 PM: 恩是个问题。但是可以用 (A2*65536+B2*256+C2)-(A2*65536+B3*256+C3)<>5 比较 这样可以吗? [ Last edited by cz1314 on 2009-1-14 at 00:30 ] |
|
| 上一页 1 2 3 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |