中国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段的整合,涉及超多次比较! 上一主题 | 下一主题
cz1314
初级用户





积分 64
发帖 43
注册 2007-11-12
状态 离线
『第 16 楼』:  一个贴只能发一个附件!继续发下部分。

3.0.0.0 4.17.135.31
4.17.135.64 4.17.142.255

这2段ip 也是连续的。



再说直接点,
先比较每行的 A1.B1.C1.D1 进行比较。如果不连续 再将 A2.B2.C2.D2       与下一行的 A1.B1.C1.D1  比较是否连续。

[ Last edited by cz1314 on 2009-1-11 at 16:01 ]

附件 1: test.part02.rar (2009-1-11 15:50, 30.57 K,下载次数: 8)
2009-1-11 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



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

你上一贴的附件不完全,解压不了。

我觉得你设置的规则有些问题,例如你给的结果取样整合如下:
2.6.190.56 2.6.190.63
3.0.0.0  4.24.144.255

那么
2.6.190.0 到 2.6.190.55 是没有的,你没有整合,
2.6.190.64 到 2.6.190.255 是没有的,你没有整合,
4.23.128.184 到 4.23.128.193是没有的,为何要整合?如果是因为该段出现过IP,就整合表示该段A.B.0.0到该段的A.B.255.255都有,那就跟你上两条的规则矛盾了哦?

我觉得我的统计方法是严密的,统计所有连续段并输出。

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

游手好闲 + 无所事事 ..



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

晕倒,原来你要的统计精度是 ABC,我第一写的是统计到A.B,第二次写的是A.B.C.D。。。。汗一个

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





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



  Quote:
Originally posted by exzzz at 2009-1-11 04:10 PM:
你上一贴的附件不完全,解压不了。

我觉得你设置的规则有些问题,例如你给的结果取样整合如下:
2.6.190.56 2.6.190.63
3.0.0.0  4.24.144.255

那么
2 ...

应外一部分在你楼上的帖子里, 附件大了 只有分成2部分。

15楼,16楼一楼一个附件,2个放一起就可以解压了

我发现 理解有误差, 我重新解释下 待整理文本的含义:
---------------------
3.17.233.0        3.17.233.255        UNITED STATES
3.17.234.0        3.18.63.255        UNITED STATES
3.18.64.0        3.18.64.255        UNITED STATES
3.18.65.0        3.18.95.255        UNITED STATES
3.18.96.0        3.18.96.255        UNITED STATES
-----------------------
既,
从 3.17.233.0  到  3.17.233.255   属于美国ip段
从 3.17.234.0  到  3.18.63.255     属于美国
从 3.18.64.0    到  3.18.64.255         属于美国
从 3.18.65.0    到  3.18.95.255         属于美国
从 3.18.96.0    到  3.18.96.255         属于美国


每行的前部分与后部分是不用进行比较的,再举一个例子
现在有20个球,分别用0.1 - 2.0 的数字来表示。
---------文本-------------
0.1    0.4       黑色 (0.1号到0.4号球是黑色)
0.4    1.1       黑色
1.2    1.3       黑色
1.7    1.8       黑色
---------文本-------
这样上面文本可以整合。
0.1    1.3      黑色
1.7    1.8      黑色




这样解释不知道能不能有作用

[ Last edited by cz1314 on 2009-1-11 at 16:30 ]

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

游手好闲 + 无所事事 ..



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

你把我第二次发的稍微修改一下,删除几个变量就可以用了。。。
我第一次写的那个,算法有误,不要使用了。

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

游手好闲 + 无所事事 ..



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

2.6.190.56 2.6.190.63
3.0.0.0 4.18.65.255
4.18.67.0 4.24.144.255
4.24.146.0 4.25.164.255
4.25.166.0 4.37.0.255
4.37.2.0 4.48.215.255
4.48.217.0 4.48.218.255
4.48.222.0 4.48.222.255
4.48.230.0 4.78.21.255
4.78.24.0 4.78.55.255
4.78.58.0 4.255.255.255
6.0.0.0 9.4.13.255
9.4.15.0 9.4.28.255
9.4.30.0 9.4.76.255
9.4.78.0 9.4.93.255
9.4.95.0 9.255.255.255


这个是我修改脚本后,只统计ABC精度的结果,你看看是不是你要的?

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

游手好闲 + 无所事事 ..



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

只统计A.B.C精度
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
title IP分段工具,开始时间是 %time%
del /f /q 分段结果.txt 2>nul

set start1=
set n=0
for /f "tokens=1-8 delims=.        " %%a in (IPDATA.txt) do (
        set /a n=!n!+1
        if #!start1!#==## (
                set start1=%%a&set start2=%%b&set start3=%%c&set start4=%%d
                SET /A oldnum2=%%a*256*256+%%b*256+%%c
                )
        SET /A nownum1=%%a*256*256+%%b*256+%%c
        if /i !nownum1! GTR !oldnum2! (
                echo !start1!.!start2!.!start3!.!start4! !end1!.!end2!.!end3!.!end4! >>分段结果.txt
rem                echo 输出IP段  !start1!.!start2!.!start3!.!start4! --- !end1!.!end2!.!end3!.!end4!
                set start1=%%a&set start2=%%b&set start3=%%c&set start4=%%d
                )
        SET /A oldnum2=%%e*256*256+%%f*256+%%g+1
        set end1=%%e&set end2=%%f&set end3=%%g&set end4=%%h
        if /i !n! gtr 9999 (
                echo 每处理10000行刷新一次,现在正在处理 %%a.%%b.%%c.%%d  %%e.%%f.%%g.%%h
                set n=0
                )
)

echo !start1!.!start2!.!start3!.!start4! !end1!.!end2!.!end3!.!end4! >>分段结果.txt
echo ********************
rem type 分段结果.txt
pause


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





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



  Quote:
Originally posted by exzzz at 2009-1-11 04:26 PM:
2.6.190.56 2.6.190.63
3.0.0.0 4.18.65.255
4.18.67.0 4.24.144.255
4.24.146.0 4.25.164.255
4.25.166.0 4.37.0.255
4.37.2.0 4.48.215.255
4.48.217.0 4.48.218.255
4.48.222.0 4.48.222.255
...

这个结果没有整合完。

3.0.0.0          4.18.65.255
4.18.67.0      4.24.144.255

是连续的啊。    4.18.65.255 的下一个ip 数字就是  4.18.67.0

结果中 B 段部分都是可以再整合的


麻烦老师再看下  19楼。
并不是精度的问题,而是比较的问题。

ip1 -  ip2    美国
ip3 -  ip4    美国
ip5 -  ip6    美国
ip7 -  ip8    美国

我的思路先比较   ip1  ip3  是否连续 如果连续则 1、2行可以整合成
ip1 - ip4    美国
如果ip1 ip3  不是连续的,再比较 ip2 和ip3 ,如果ip2 ip3 是连续的,那么1、2也可以整合成  ip1 - ip4.如果这2个比较都不连续,则输出 ip1 -ip2 ,再进行下一轮比较,既比较ip3 和 ip5,如果连续则整合,不连续再比较 ip4 ip5是否连续,依次比较。。。

[ Last edited by cz1314 on 2009-1-11 at 16:39 ]

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





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

不知道这样解释  能让您明白我的意思没?

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

游手好闲 + 无所事事 ..



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

这个结果没有整合完。

3.0.0.0          4.18.65.255
4.18.67.0      4.24.144.255

是连续的啊。    4.18.65.255 的下一个ip 数字就是  4.18.67.0

结果中 B 段部分都是可以再整合的



4.18.65.255 的下一个ip 4.18.66.0 而不是  4.18.67.0 ,所以我截止到4.18.65.255输出了,没有错啊???


ip1 -  ip2    美国
ip3 -  ip4    美国
ip5 -  ip6    美国
ip7 -  ip8    美国

我的思路先比较   ip1  ip3  是否连续 如果连续则 1、2行可以整合成
ip1 - ip4    美国
如果ip1 ip3  不是连续的,再比较 ip2 和ip3 ,如果ip2 ip3 是连续的,那么1、2也可以整合成  ip1 - ip4.如果这2个比较都不连续,则输出 ip1 -ip2 ,再进行下一轮比较,既比较ip3 和 ip5,如果连续则整合,不连续再比较 ip4 ip5是否连续,依次比较。。。


IP1的后面有IP2,IP2至少比IP1大1,IP3至少比IP2大1,那IP3怎么可能等于IP1+1?所以不存在IP1跟IP3连续的可能,只存在IP2跟IP3连续的可能

[ Last edited by exzzz on 2009-1-11 at 16:52 ]

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





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

不好意思我看走眼了。。。。非常抱歉。

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

游手好闲 + 无所事事 ..



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

我晕……


没事我做月报去了,拜拜。

[ Last edited by exzzz on 2009-1-11 at 16:54 ]

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





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

刚才是我看错了,很不好意思
能再提个要求么。  就是:
在 AB 相同的情况下 C 段比较后相差小于100 的都当连续的整合,

如果不方便就去掉c段的精度。只要 AB 精度。

[ Last edited by cz1314 on 2009-1-11 at 16:58 ]

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

游手好闲 + 无所事事 ..



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



  Quote:
Originally posted by cz1314 at 2009-1-11 04:55 PM:
刚才是我看错了,很不好意思
能再提个要求么。  就是:
在 AB 相同的情况下 C 段比较后相差小于100 的都当连续的整合,

兄弟,自己研究一下吧,可以实现的。。。。。。
BTW,HAT版主肯定很不爽了,哈哈,他最不喜欢别人直接等脚本的,他喜欢启发新人自行处理问题。
我都提供那么多脚本了,你再修改修改就能实现了。

授人鱼不如授人以渔!

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





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



  Quote:
Originally posted by exzzz at 2009-1-11 04:59 PM:



兄弟,自己研究一下吧,可以实现的。。。。。。
BTW,HAT版主肯定很不爽了,哈哈,他最不喜欢别人直接等脚本的,他喜欢启发新人自行处理问 ...

非常非常感谢,剩下的问题我自己解决。



88211412 是我的q  ,程序方面我不是很懂,如果在网络方面您碰到什么困难如果有我能帮的上的,您可以m我。

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


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



论坛跳转: