中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]对ip段的整合,涉及超多次比较!
« [1] [2] [3] »
作者:
标题: [已结]对ip段的整合,涉及超多次比较! 上一主题 | 下一主题
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 31 楼』:  

明年开始我就不做移动的代维了,项目解散了,组员都走了。就剩下我了,boss说要调我去国税让我跟其他网络工程师学习网络,要学的东西可就多了。不过我也正好要学这方面。就好像算法里面的 IP换算成10进制一样,呵呵,昨晚还去翻了本CCNA的书才知道的。

2009-1-11 17:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 32 楼』:  我来追加一个(全精度的),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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-1-12 01:42
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
cz1314
初级用户





积分 64
发帖 43
注册 2007-11-12
状态 离线
『第 33 楼』:  思路很牛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  不整合。

这是最适合的精度。。

2009-1-12 05:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cz1314
初级用户





积分 64
发帖 43
注册 2007-11-12
状态 离线
『第 34 楼』:  

全精度的代码执行起来需要很厂时间,大概有400万条数据处理。
@echo off
title 全自动ip搜索整理,开始时间是 %time%
SETLOCAL ENABLEDELAYEDEXPANSION
@del /f /q ok.txt 2>nul
set start1=
set n=0
for /f "tokens=1-8 delims=.        " %%a in (ip.txt) do (
        set /a n=!n!+1
        if #!start1!#==## (
                set start1=%%a&set start2=%%b
                SET /A oldnum2=%%a*256+%%b
                )
        SET /A nownum1=%%a*256+%%b
        if /i !nownum1! GTR !oldnum2! (
                echo !start1!.!start2!.%%c.%%d !end1!.!end2!.%%g.%%h>>ok.txt
rem                echo 输出IP段  !!start1!.!start2!.!start3!.!start4! --- !end1!.!end2!.!end3!.!end4!
                set start1=%%a&set start2=%%b
                )
        SET /A oldnum2=%%e*256+%%f+1
        set end1=%%e&set end2=%%f
        if /i !n! gtr 9999 (
               
                set n=0
                )
)
这是我修改 exzzz 发出的代码

处理完400万条数据在 10分钟以内

全精度的好象需要几个小时

[ Last edited by cz1314 on 2009-1-12 at 05:55 ]

2009-1-12 05:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 35 楼』:  



  Quote:
Originally posted by netbenton at 2009-1-12 01:42 AM:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
title IP分段工具,开始时间是 %time%
cd. >分段结果.txt
set n=
set _h1=1
echo.&echo.&echo.&echo.
for /f "tokens=1-8, ...

呵呵,我测试了一下,在我这台赛扬2.66的机器上,
将你我代码中所有有关 计数及屏显 的提示内容 rem 掉运行处理楼主提供的IPDATA.TXT。

你的算法需要14.3秒,我的算法用7.9秒。。。。。。

2009-1-12 12:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 36 楼』:  

我的处理纯真网络解压出来的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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-1-12 20:09
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
cz1314
初级用户





积分 64
发帖 43
注册 2007-11-12
状态 离线
『第 37 楼』:  

哈哈!  netbenton  真幽默。你的代码的确不错!!!

2009-1-13 00:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 38 楼』:  



  Quote:
Originally posted by netbenton at 2009-1-12 08:09 PM:
我的处理纯真网络解压出来的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 ]

呵呵,我的也是。

2009-1-13 10:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 39 楼』:  



  Quote:
但是我不需要全精度的,
最合适的精度是 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  不整合。

这是最适合的精度。。
...

那这样的也不整合吗?
1.0.0.15  1.1.255.255
1.2.0.0  1.2.12.17



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-1-13 15:11
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 40 楼』:  大提速

::全精度比较
::处理楼主的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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-1-13 15:20
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
cz1314
初级用户





积分 64
发帖 43
注册 2007-11-12
状态 离线
『第 41 楼』:  



  Quote:
Originally posted by netbenton at 2009-1-13 03:11 PM:

那这样的也不整合吗?
1.0.0.15  1.1.255.255
1.2.0.0  1.2.12.17

恩是个问题。但是可以用

(A2*65536+B2*256+C2)-(A2*65536+B3*256+C3)<>5  比较

这样可以吗?

[ Last edited by cz1314 on 2009-1-14 at 00:30 ]

2009-1-14 00:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: