标题: [文本处理] [已解决]批处理如何提取文本中IP地址? [打印本页]
作者: pdp320921 时间: 2011-3-31 15:40 标题: [已解决]批处理如何提取文本中IP地址?
本帖最后由 pdp320921 于 2011-4-3 00:07 编辑
arp -a得出下面的信息,如何分别提取192.168.101.102
192.168.101.1
192.168.101.100
单独提取arp-a中的ip地址,赋给变量(一个IP地址赋给一个变量)~~
Interface: 192.168.101.102 --- 0xb
Internet Address Physical Address Type
192.168.101.1 00-1a-70-e9-a6-9d dynamic
192.168.101.100 1c-75-08-89-ab-12 dynamic
192.168.101.255 ff-ff-ff-ff-ff-ff static
224.0.0.22 01-00-5e-00-00-16 static
224.0.0.252 01-00-5e-00-00-fc static
255.255.255.255 ff-ff-ff-ff-ff-ff static
注明:第一行为空行。
提取第一个- for /f "skip=1 tokens=2 delims=:" %%i in ('arp -a') do @echo %%i
复制代码
好像不行
作者: CrLf 时间: 2011-3-31 15:52
- @echo off&setlocal enabledelayedexpansion
- for /f %%i in ('arp -a') do (
- set /a n+=1
- echo>!n!.txt %%i
- )
复制代码
作者: pdp320921 时间: 2011-3-31 16:10
2# zm900612
感谢楼上的回复,可能我没描述清楚,我只是想单独提取arp-a中的ip地址,赋给变量(一个IP地址赋给一个变量)~~
我修改下内容好了
作者: tmplinshi 时间: 2011-3-31 16:32
- @echo off
- SetLocal EnableDelayedExpansion
- set n=
- for /f "tokens=1-3" %%a in (' arp -a ') do (
- if "%%a" == "Interface:" (
- set /a n += 1
- set IP_!n!=%%b
- ) else if "%%c" == "dynamic" (
- set /a n += 1
- set IP_!n!=%%a
- )
- )
- set IP_
- pause
复制代码
作者: pdp320921 时间: 2011-3-31 16:56
4# tmplinshi
可以提取第一个IP,但不懂什么意思?能帮忙解释下吗?谢谢!
作者: CrLf 时间: 2011-3-31 17:10
- @echo off&setlocal enabledelayedexpansion
- for /f %%i in ('arp -a') do (
- set /a n+=1
- set ip!n!=%%i
- )
- set ip
- pause
复制代码
作者: pdp320921 时间: 2011-3-31 18:19
4# tmplinshi
我自己写了个提取第一个ip地址的- for /f "tokens=2 delims=:-" %i in ('arp -a ^|findstr /c:"Interface"') do @echo %i
复制代码
可是想提取第二和第三个IP地址,却不知如何实现?(最好是利用简短的命令行(同上)
作者: tmplinshi 时间: 2011-3-31 18:36
本帖最后由 tmplinshi 于 2011-3-31 18:43 编辑
7# pdp320921 - for /f "delims=Interfac: " %i in ('arp -a^|findstr ": mic"') do @echo %i
复制代码
作者: pdp320921 时间: 2011-3-31 18:51
本帖最后由 pdp320921 于 2011-3-31 18:58 编辑
8# tmplinshi
好强大,版主好给力!
我其实是想用3条命令行分别得出3个IP地址~
不知3个IP是否可以单独输出?
还有就是可以不依照dynamic吗?因为有时候可能是静态IP地址
作者: tmplinshi 时间: 2011-3-31 19:14
- for /f "tokens=2" %i in ('arp -a^|findstr :') do echo %i
复制代码
- for /f %i in ('arp -a^|findstr "mic 动"') do echo %i
复制代码
- for /f %i in ('arp -a^|findstr "tic 静"') do echo %i
复制代码
是这个意思吗?
作者: pdp320921 时间: 2011-3-31 19:59
本帖最后由 pdp320921 于 2011-3-31 22:29 编辑
10# tmplinshi
版主果然很强大,谢谢版主
都因为没理解findstr的精髓啊!
如果几个都是动态或都是静态IP地址,该又如何单独去提取?
譬如:
192.168.101.1 00-1a-70-e9-a6-9d dynamic
192.168.101.100 1c-75-08-89-ab-12 dynamic
192.168.101.102 ............................. dynamic
...
....
作者: tmplinshi 时间: 2011-3-31 22:31
11# pdp320921
单独提取是什么意思?
作者: pdp320921 时间: 2011-3-31 22:44
- for /f "tokens=2" %i in ('arp -a^|findstr :') do echo %i
复制代码
这句提取第一个IP复制代码
这句提取第二个IP复制代码
这句提取第三个IP
.....
作者: tmplinshi 时间: 2011-3-31 23:06
- for /f "tokens=2" %i in ('arp -a^|findstr :') do echo %i
复制代码
- for /f "tokens=2" %i in ('arp -a^|findstr /n .^|findstr 4:') do echo %i
复制代码
- for /f "tokens=2" %i in ('arp -a^|findstr /n .^|findstr 5:') do echo %i
复制代码
作者: pdp320921 时间: 2011-3-31 23:23
14# tmplinshi
再次感谢版主,应该差不多了,我要回去好好补补课了~
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |