标题: [文本处理] [已解决]批处理怎样找出文件中未出现的数字? [打印本页]
作者: carbonincauc 时间: 2011-10-6 19:01 标题: [已解决]批处理怎样找出文件中未出现的数字?
本帖最后由 carbonincauc 于 2011-11-4 23:59 编辑
求助达人,现有一文件a.txt,格式如:
10.1.17.17
10.1.17.99
10.1.17.118
10.1.17.166
10.1.17.123
10.1.17.125
10.1.17.156
10.1.17.184
10.1.17.199
10.1.17.216
10.1.17.226
10.1.17.186
现在想找出10.1.17.1-255 中没有出现的IP地址,分行存放到另外的b.txt中以方便调用,我该怎么做呢?
想了好久,用for试了好久也没弄出来,求助达人。谢谢。。
作者: jellyhk 时间: 2011-10-6 19:31
你是怎么做的!我是新手,代码写不出来我给思路行吧?
用自加代码!从一加起。%a%
再用for,for里面的用‘命令find“查找10。1。17。%a%
再用errorlevel查看是否有!
再把没有的ip写出来!
不知道看懂没你!
作者: CrLf 时间: 2011-10-6 20:14
本帖最后由 CrLf 于 2011-10-6 20:15 编辑
- for /f "tokens=4 delims=. " %%a in (ip.txt) do set ip%%a=.
- for /l %%a in (1 1 255) do if not defined ip%%a echo 不存在 %%a
复制代码
作者: yangfengoo 时间: 2011-10-6 20:17
- @echo off
- for /f "tokens=4 delims=." %%a in (a.txt) do set _%%a=%%a
- (for /l %%a in (1 1 255) do if not defined _%%a echo 10.1.17.%%a)>B.txt
复制代码
作者: 601997526 时间: 2011-10-6 20:56
参照2楼的思路- @echo off&setlocal ENABLEDELAYEDEXPANSION
- for /l %%i in (1 1 255) do (findstr "^10\.1\.17\.%%i$" a.txt >nul||echo 10.1.17.%%i)
- pause
复制代码
作者: lxzzr 时间: 2011-10-7 00:33
回复 5# 601997526
setlocal ENABLEDELAYEDEXPANSION,没明白上面代码加这句作甚?
作者: hankerer 时间: 2011-10-7 10:54
- @echo off
- for /l %%i in (1 1 255) do echo 10.1.17.%%i>>c.txt
- findstr /v /G:b.txt c.txt>result.txt
- del c.txt/q
- pause
复制代码
给个不一样的思路。
b.txt是要查找的那几条记录
作者: 601997526 时间: 2011-10-7 11:24
回复 6# lxzzr
个人习惯问题,所以就顺手加上了
作者: zaixinxiangnian 时间: 2011-10-7 19:44
回复 3# CrLf
CRLF这个我理解了好长时间,不知道对不对,是不是第一句是把已有的数赋值给“.”。第二句从1到255来检测,如果没有被上句赋值就显示出来。特别是set ip%%a=. 理解了好长时间,不知道执行过程是怎么样的。在我一句一句试的时候,本来echo %%a来试的,也没有明白其中的意思,把%%a改成set ip%%a=. 的时候忘了把echo去掉。运行结果看到把所有已有的值赋给了“.”本来还正打算问你怎么解释呢?
作者: HAT 时间: 2011-10-7 20:13
不是把已有的数赋值给“.”,而是把“.”赋值给用已有的数定义的变量。然后根据这个变量是否被定义过,来判断这个1~255哪个是已有的。
这个方法在删除文件重复行的代码里面经常会用到,比如:
http://bbs.bathome.net/thread-4690-1-1.html
作者: zaixinxiangnian 时间: 2011-10-7 20:19
每个代码都试了下,FOR中嵌套findstr效率很慢啊
作者: CrLf 时间: 2011-10-7 20:43
在脚本末尾 set ip 查看变量一下也许就明白了
外部命令天生运行效率高但是启动效率低,非必要情况不宜进入循环
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |