标题: [文本处理] 如何用findstr从ipconfig /all结果中定位到指定的网卡/适配器/网络连接提取ip地址 [打印本页]
作者: dmxiaoma 时间: 2017-6-27 19:15 标题: 如何用findstr从ipconfig /all结果中定位到指定的网卡/适配器/网络连接提取ip地址
findstr的使用方法,求助
电脑ipconfig /all的结果
根据这个帖子:http://bbs.bathome.net/viewthread.php?tid=32287&highlight=MAC
为了xp和win7系统都能获取到IP和MAC地址,修改的代码:
@echo off
set "wkmza=Ethernet adapter 本地连接"
set "wkmzb=以太网适配器 本地连接"
set "FileTmp=%temp%\ipList.txt"
ipconfig /all >"%FileTmp%"
for /f "delims=:" %%i in ('findstr /n "%wkmza% %wkmzb%" "%FileTmp%"') do (
set "SkipRow=%%i"
goto oSkip
)
:DoSkip
for /f "tokens=2 delims=:" %%i in ('more +%SkipRow% "%FileTmp%" ^| findstr /i /r "IPv4.地址 IP.Address"') do (set "IP=%%i")
for /f "tokens=2 delims=:" %%i in ('more +%SkipRow% "%FileTmp%" ^| findstr "..-..-..-..-..-.."') do (
set "MAC=%%i"
goto :ShowResult
)
:ShowResult
set "MAC=%MAC: =%"
set "IP=%IP: =%"
echo,IP地址:%IP首选)=%
echo,MAC地址:%MAC:-=%
pause
获取结果:
IP地址:192.168.164.1
MAC地址:4439C4526847
正确的结果IP地址应该是192.168.0.16
标红的代码改成for /f "delims=:" %%i in ('findstr /n /c:"%wkmzb%" "%FileTmp%"') do (
也是一样的结果
这是为什么会得出这样错误的结果?
作者: hlzj88 时间: 2017-6-27 20:02
你的几块网卡都有地址,他们前面的标志都是一样的,物理地址和 IPv4 地址 ,电脑不是你肚里的虫,不知道你的心思的,它只会在你给定的条件里发现相关数据,因为用了for,会对数据一直分析到最后。所以,不是你想要的结果。
作者: dmxiaoma 时间: 2017-6-27 20:35
回复 2# hlzj88
谢谢帮助,为什么那个MAC地址就是对的呢?
作者: dmxiaoma 时间: 2017-6-28 17:43
本帖最后由 dmxiaoma 于 2017-6-28 17:45 编辑
回复 2# hlzj88
我按你提示改了下代码,现在可以用了。
再请教个问题用findstr多条件查找时要怎么写代码?
比如条件1是tj1 条件2是tj2
我要找满足条件1 或条件2 的是下面这样写么?
findstr /i "%tj1% %tj2%" "a.txt"'
要同时满足条件1和条件2 呢,怎么写代码?
还有原代码中用了/c参数是因为条件是有空格的字符串是吧?我现在没用这参数会不会对结果有影响?
作者: ShowCode 时间: 2017-6-28 19:57
回复 4# dmxiaoma - findstr /i "%tj1%" "a.txt" | findstr /i "%tj2%"
复制代码
作者: hlzj88 时间: 2017-6-28 19:59
我所知道的用法是- findstr /i "tj1" a.txt|findstr /i "tj2">>3.txt
复制代码
如这样的例子。
在找到tj1时传递用来发现tj2,满足条件写入文本。即一句话里同时存在两个关键词。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |