Board logo

标题: [网络连接] 求助批处理findstr获取电脑MAC和IP地址 [打印本页]

作者: dmxiaoma    时间: 2017-2-15 12:07     标题: 求助批处理findstr获取电脑MAC和IP地址

本人是批处理小白一个,有计算机基础,看到别人做的批处理工具很方便,也想通过做批处理工具来完成一些工作。
目标:想做一个批处理运行后显示电脑的MAC地址和IP地址
具体需求:全是win7和xp的电脑,有些有多网卡,现在需要通过ipconfig/all命令,通过找到网卡名来获取电脑的MAC和IP地址,最后显示的内容就是电脑的MAC和IP地址。
另:绝大部分电脑还是能通过找“本地连接”来获取到正确的IP和MAC地址,有多个本地连接的不知道怎么办,正常情况下是所有电脑IP都是以固定数字16开头的,如16.*.*.*,如果能通过找到23开关的IP所在的网卡的MAC地址是最准确的办法,但不知道能不能通过批处理实现。
通过搜索找到了这个帖子:http://bbs.bathome.net/thread-32288-1-1.html,里面的代码已经实现了一半的功能了!
上网找了些资料学习后,尝试自己改代码,但总是不成功,快崩溃了!
我根据这个帖子http://www.bathome.net/viewthread.php?tid=9037里面提供的方法,改了下代码如下:
  1. set "AdapterNamea=以太网适配器 本地连接"
  2. set "AdapterNameb=Ethernet adapter 本地连接"
  3. set "FileTmp=%temp%\ipList.txt"
  4. ipconfig /all >"%FileTmp%"
  5. for /f "delims=:" %%i in ('findstr /n /c:"%AdapterNamea%" /c:"%AdapterNameb%" "%FileTmp%"') do (
  6.     set "SkipRow=%%i"
  7.     goto :DoSkip
  8. )
复制代码
就上面这一段,我想同时加入xp和win7的查找,就是搜索AdapterNamea 或 AdapterNameb,但一加这段代码就失效了。
后面的我想加入获取MAC的代码也是各种问题。
求大神帮忙改下,能实现我所说的目标就行,感激不尽!
收集到的一些信息:
XP网卡名:Ethernet adapter 本地连接
WIN7网卡名:以太网适配器 本地连接
xpIP:IP Address
xpMAC:Physical Address
Win7IP:IPv4 地址
Win7MAC:物理地址
作者: dmxiaoma    时间: 2017-2-15 12:09

本帖最后由 dmxiaoma 于 2017-2-15 14:39 编辑

先上传一份一台电脑的ipconfig内容:

Windows IP 配置

   主机名  . . . . . . . . . . . . . : USER-20151029TF
   主 DNS 后缀 . . . . . . . . . . . :
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Ethernet Connection I217-LM
   物理地址. . . . . . . . . . . . . : 44-39-C4-52-63-42
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::e896:88ef:3c9f:8152%12(首选)
   IPv4 地址 . . . . . . . . . . . . : 16.230.1.109(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2017年1月17日 11:09:37
   租约过期的时间  . . . . . . . . . : 2017年2月15日 13:09:44
   默认网关. . . . . . . . . . . . . : 16.230.1.254
   DHCP 服务器 . . . . . . . . . . . : 16.230.1.253
   DHCPv6 IAID . . . . . . . . . . . : 256129476
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1D-C3-E5-5D-44-39-C4-52-68-47
   DNS 服务器  . . . . . . . . . . . : 16.226.1.253
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet1
   物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-01
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::98b2:3bfb:f332:6a59%14(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.74.1(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 318787670
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1D-C3-E5-5D-44-39-C4-52-68-47
   DNS 服务器  . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
   物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::8cf8:dc17:86f2:c573%16(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.164.1(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 352342102
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1D-C3-E5-5D-44-39-C4-52-68-47
   DNS 服务器  . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

隧道适配器 isatap.{AB0E13BB-890A-4BBB-B331-848F69BC2DBE}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Microsoft ISATAP Adapter
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是

隧道适配器 isatap.{CE4D1FDD-45F4-429C-8CAE-FAC202B769F4}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Microsoft ISATAP Adapter #2
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是

隧道适配器 本地连接* 6:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Microsoft Teredo Tunneling Adapter
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   IPv6 地址 . . . . . . . . . . . . : 2001:0:7ce8:845e:148b:d5a:3f57:fe92(首选)
   本地链接 IPv6 地址. . . . . . . . : fe80::148b:d5a:3f57:fe92%11(首选)
   默认网关. . . . . . . . . . . . . : ::
   TCPIP 上的 NetBIOS  . . . . . . . : 已禁用

隧道适配器 isatap.{880ACCC2-B788-4C8A-87BD-7CEDEA92E02B}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Microsoft ISATAP Adapter #3
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
作者: taofan712    时间: 2017-2-15 13:06

你把你想要获取的字符串用红色标注一下?
作者: dmxiaoma    时间: 2017-2-15 14:40

我标红了下了,麻烦看下,这是台win7的电脑,还有xp系统的电脑,关键字我1楼有标红的。
作者: taofan712    时间: 2017-2-15 15:24

本帖最后由 taofan712 于 2017-2-15 15:39 编辑
  1. @echo off
  2. for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|find "Physical Address"') do ( set mac=%%a )
  3. for /f "tokens=2 delims=:" %%b in ('ipconfig /all^|find "IP Address"') do ( set ip=%%b )
  4. echo;  %mac%  %ip% &pause>nul
复制代码

作者: dmxiaoma    时间: 2017-2-16 09:17

本帖最后由 dmxiaoma 于 2017-2-16 09:32 编辑

回复 5# taofan712


    这个只能获取到xp系统电脑的IP和MAC地址,如果是win7就获取不到了啊,我就是想一个批理,不管是xp还是win7系统都能获取到!
    就是我上面说的目标:做一个批处理,在任意电脑(全是xp或win7系统)上运行都能正确显示出该电脑的IP和MAC地址!
作者: taofan712    时间: 2017-2-16 09:49

本帖最后由 taofan712 于 2017-2-16 09:54 编辑

回复 6# dmxiaoma

         加一个判断,if /i %WinOS%==XP
                              if  %WinOS%==7
%winos%可以用ver命令得出。
不同的系统find不同的关键字就是了啊。
作者: taofan712    时间: 2017-2-16 10:06

回复 6# dmxiaoma

    还可以这样获取winos
    wmic os get caption|find /i "xp" && set "WinOs=xp"|| set "WinOs=7"
作者: dmxiaoma    时间: 2017-2-16 10:29

回复 8# taofan712

哦,就是不同系统goto一下是吧?
我一楼里这段代码为什么不能达到逻辑或的功能呢?就是实现搜索xp或win7下的关键字这样的功能。
for /f "delims=:" %%i in ('findstr /n /c:"%AdapterNamea%" /c:"%AdapterNameb%" "%FileTmp%"')
作者: taofan712    时间: 2017-2-16 10:39

本帖最后由 taofan712 于 2017-2-16 11:33 编辑

回复 9# dmxiaoma



    我刚开始学批处理,不是很懂,我之前的印象是(可能是错误的):findstr 查找内容 “A  B” 就是查找A或者B,加参数 /c "A  B",就是查找“A B”,不确定有“/C /C”这种用法。
所以如果被查找的对象本身有空格,好像很复杂,建议用if判断。
作者: dmxiaoma    时间: 2017-2-16 15:29

回复 10# taofan712

那下面这段代码中的找ipv6和找IP是逻辑或还是顺序执行?能解释下标红的这段代码的意思吗?
    for /f "tokens=2 delims=" %%i in ('more +%SkipRow% "%FileTmp%" ^| findstr /v "IPv6" ^|findstr "IP"')
作者: GNU    时间: 2017-2-16 15:31

回复 11# dmxiaoma


    顺序执行。查找不包含 IPv6 而且包含 IP 的行。
作者: dmxiaoma    时间: 2017-2-16 16:05

回复 12# GNU


    感谢!
    如果我想直接搜索ipconfig /all中含有192.168.1.*这样的IP地址,代码应该怎么写?
    电脑中有多个虚拟网卡IP如:192.168.164.3,192.168.74.5
    我用findstr "192.168.1."或"192.168.1.*" 搜索出来的结果却是192.168.164.3这样错误的结果。
    正确的表达式应该是怎样的?
作者: dmxiaoma    时间: 2017-2-16 17:33

求大神们帮写段代码:
运行wmic nicconfig get IPAddress,MACAddress |findstr "192.168.1.109"
得到结果
{"192.168.1.109", "fe80::e896:88ef:3c9f:8152"}  44:39:C4:52:68:47
现在怎么通过批处理命令把44:39:C4:52:68:47提取出来?
我写的代码不知道为什么不行:
@echo off
for /f "tokens=1,2 delims= " %%a in ('wmic nicconfig get IPAddress,MACAddress ^|findstr "192.168.1.109"') do (set "MAC=%%b")
echo, MAC地址^: %MAC%
pause
作者: B魔方大人    时间: 2017-2-16 17:43

求大神们帮写段代码:
运行wmic nicconfig get IPAddress,MACAddress |findstr "192.168.1.109"
得到结果 ...
dmxiaoma 发表于 2017-2-16 17:33



    wmic nicconfig get IPAddress^,MACAddress 逗号加个转义试试
作者: dmxiaoma    时间: 2017-2-17 08:21

回复 15# B魔方大人


    感谢啊!加上这个就好了!太感谢了!
作者: ygqiang    时间: 2017-2-17 14:37

回复 16# dmxiaoma


最终解决了吗?代码是?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2