Board logo

标题: [网络连接] 有宽带连接和本地连接时批处理怎样提取本地连接MAC地址? [打印本页]

作者: lx427    时间: 2011-7-7 02:01     标题: 有宽带连接和本地连接时批处理怎样提取本地连接MAC地址?

本人写了一段代码,用来提取MAC地址,但是在有本地连接和宽带连接时,会把本地连接和宽带连接的MAC地址都显示出来
  1. @echo off
  2. for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do echo %%i
  3. pause
复制代码
以下是运行ipconfig /all命令得到的内容,请问该如何改写上面的代码,才能得到我只想要的本地连接的MAC地址?

C:\Documents and Settings\xiaoxiang>ipconfig /all

Windows IP Configuration

        Host Name . . . . . . . . . . . . : MU1PGOUDM3MC7TO
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : Yes
        WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接 2:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : NVIDIA nForce 10/100 Mbps Ethernet
        Physical Address. . . . . . . . . : 00-E0-4C-41-11-A6
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.16.21
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.16.1
        DNS Servers . . . . . . . . . . . : 192.168.16.1
                                            192.168.10.220

PPP adapter 宽带连接:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
        Physical Address. . . . . . . . . : 00-53-45-00-00-00
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 183.2.222.4
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 183.2.222.4
        DNS Servers . . . . . . . . . . . : 202.96.128.86
                                            202.96.134.33
        NetBIOS over Tcpip. . . . . . . . : Disabled
作者: lxzzr    时间: 2011-7-7 03:47

Wmic NIC Where "NetConnectionID='本地连接'" Get MACAddress
作者: lx427    时间: 2011-7-7 09:21

本帖最后由 lx427 于 2011-7-7 09:23 编辑

2# lxzzr

我觉得这种方法通用性有限,如果本地连接 是名称为  本地连接 2时,就找不到范例,我个人只有一个思路,就是先用ipconfig /all命令取得 以太网连接的名字
  1. for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "Ethernet adapter"')  do set Ethernet=%%k
复制代码
然后再根据这个得出来的名称去查找得出MAC地址,由于本人批处理基本功很差,只有思路,代码写作能力差,肯请帮我完善一下。

我所用的批处理完整代码如下,这些代码是我在论坛东拼西凑搞出来的,有的意思我自己都不是很明白,但是可以实际我要的效果
根据MAC地址修改计算机名,IP地址,计算机注释,设置本地连接为自动获取IP地址。
后面依次是计算机名,IP,mac,计算机注释,中间用跳格键隔开。
  1. @echo off
  2. for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do set mac=%%i
  3. for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "Ethernet adapter"')  do set Ethernet=%%k
  4. for /f "tokens=1,2" %%i in ('more /e +13 %0 ^|find /i "%mac:~,-1%"') do set "name=%%i"
  5. for /f "tokens=4" %%j in ('more /e +13 %0 ^|find /i "%mac:~,-1%"') do set "p=%%j"
  6. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %name% /f >nul 2>nul
  7. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
  8. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f >nul 2>nul
  9. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %p% /f >nul 2>nul
  10. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %p% /f >nul 2>nul
  11. netsh interface ip set address "%Ethernet:~,-2%"  source=dhcp
  12. netsh interface ip set dns "%Ethernet:~,-2%" source=dhcp
  13. exit
  14. lxt 192.168.1.10 00-0b-2f-49-d6-65 梁晓婷
  15. lyf 192.168.1.11 00-e0-66-02-e8-86 刘扬凤
  16. lzx 192.168.1.12 00-e0-66-02-f5-4c 刘志仙
  17. lwt 192.168.1.13 00-e0-66-02-d6-e9 梁文婷
  18. print 192.168.1.14 00-e0-66-06-07-5d 打印机用
复制代码

作者: fastslz    时间: 2011-7-7 10:01

  1. Wmic NIC Where "NetConnectionID Like '本地连接%%'" Get MACAddress
复制代码

作者: ygqiang    时间: 2011-7-7 10:30

  1. ::用ipconfig /all命令获取网卡名称。
  2. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j
  3. ::用for命令删除网卡名称后面的冒号。
  4. FOR /F "tokens=1* delims=:" %%i in ("%name%") do set a=%%i
复制代码

作者: lxzzr    时间: 2011-7-7 12:46

2# lxzzr

我觉得这种方法通用性有限,如果本地连接 是名称为  本地连接 2时,


你不会将本地连接改为本地连接 2啊




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