[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 求助批处理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:物理地址

回复 16# dmxiaoma


最终解决了吗?代码是?

TOP

回复 15# B魔方大人


    感谢啊!加上这个就好了!太感谢了!

TOP

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



    wmic nicconfig get IPAddress^,MACAddress 逗号加个转义试试

TOP

求大神们帮写段代码:
运行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

TOP

回复 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这样错误的结果。
    正确的表达式应该是怎样的?

TOP

回复 11# dmxiaoma


    顺序执行。查找不包含 IPv6 而且包含 IP 的行。

TOP

回复 10# taofan712

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

TOP

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

回复 9# dmxiaoma



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

TOP

回复 8# taofan712

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

TOP

回复 6# dmxiaoma

    还可以这样获取winos
    wmic os get caption|find /i "xp" && set "WinOs=xp"|| set "WinOs=7"

TOP

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

回复 6# dmxiaoma

         加一个判断,if /i %WinOS%==XP
                              if  %WinOS%==7
%winos%可以用ver命令得出。
不同的系统find不同的关键字就是了啊。

TOP

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

回复 5# taofan712


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

TOP

本帖最后由 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
复制代码

TOP

我标红了下了,麻烦看下,这是台win7的电脑,还有xp系统的电脑,关键字我1楼有标红的。

TOP

返回列表