Board logo

标题: [网络连接] 在win7下批处理BAT如何提取网卡物理地址? [打印本页]

作者: sinliga    时间: 2014-4-12 20:12     标题: 在win7下批处理BAT如何提取网卡物理地址?

之前用一个别人提供的批处理批量改IP,在XP环境下,现在想换成WIN7,该批处理没用了。
代码是这样的:
  1. @color c
  2. @cls
  3. @echo [ComputersMAC] [Name] [ip] >name.xmz
  4. @echo 44-87-FC-64-58-8D A7 17 >>name.xmz
  5. @echo 00-00-00-00-00-00 A1 11 >>name.xmz
  6. @echo 44-87-FC-64-5B-8D A5 15 >>name.xmz
  7. @echo 44-87-FC-64-5B-27 A2 12 >>name.xmz
  8. @cls
  9. ipconfig /all >ipconfig.xmz
  10. find "Physical Address" ipconfig.xmz >mac.xmz
  11. for /f "skip=1 tokens=12" %%C in (mac.xmz) do set mac=%%C
  12. find "%mac%" name.xmz >key.xmz
  13. for /f "skip=1 tokens=2" %%C in (key.xmz) do set name=%%C
  14. for /f "skip=1 tokens=3" %%C in (key.xmz) do set ip=%%C
  15. @echo %name%
  16. @echo %ip%
  17. @echo Windows Registry Editor Version 5.00 >Cname.reg
  18. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName] >>Cname.reg
  19. @echo "ComputerName"="%name%" >>Cname.reg
  20. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>Cname.reg
  21. @echo "NV Hostname"="%name%" >>Cname.reg
  22. @echo "Hostname"="%name%" >>Cname.reg
  23. @echo Windows Registry Editor Version 5.00 >insn.reg
  24. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>insn.reg
  25. @echo "VirtualNetworkNumber"=dword:00000%name% >>insn.reg
  26. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NwlnkIpx\Parameters] >>insn.reg
  27. @echo "VirtualNetworkNumber"=dword:00000%name% >>insn.reg
  28. regedit /s Cname.reg
  29. regedit /s insn.reg
  30. netsh interface ip set address name="本地连接" source=static addr=192.168.11.%ip% mask=255.255.255.0 gateway=192.168.11.2 gwmetric=0
  31. netsh interface ip set dns name="本地连接" source=static addr=202.96.128.166 >nul 2>nul
  32. netsh interface ip add dns name="本地连接" addr=202.96.128.86 index=2 >nul 2>nul
  33. del /q *.xmz
  34. del /q *.reg
复制代码
XP和WIN7下的Ipconfig的区别:除了win7的变成中文外,还出现了三个“物理地址”这个关键字眼。但代码实在不会改,哪位大侠帮个忙。谢谢!
后来又找到一个好似更简便的代码,不知有没用。代码如下:
  1. @echo off
  2. color 0a
  3. :::--------------------------------------------------------------------------
  4. ::: ##@请修改机房中所有计算机名、MAC地址、ip地址加入到下面行,不够另起一行@##
  5. @cls :::清屏
  6. @echo [ComputerName] [MacAddress] [IPAddress] >config.cfg
  7. @echo a1  94-DE-80-2E-E5-DD  192.168.1.21  >>config.cfg
  8. @echo a3  94-DE-80-2E-E5-D4  192.168.1.23  >>config.cfg
  9. :::--------------------------------------------------------------------------
  10. :::::::添加你自己的机器配置
  11. @echo 正在获取机器的TCP/IP 配置
  12. ipconfig /all >ipconfig.txt
  13. :::分离出机器的物理地址,并保存到 ( phyaddr.txt) 文件中
  14. find "物理地址" ipconfig.txt >phyaddr.txt
  15. ::::从(c:\phyaddr.txt)文件中取得物理地址字符串,并赋给变量"MacAddress"
  16. for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set strMac=%%M
  17. :::显示物理地址字符串
  18. @echo 显示物理地址字符串: %strMac%
  19. ::::以变量"strMac"为关键字搜索(Config.cfg)中相同的字符串行,并保存到(ComputerCfg.txt)
  20. find "%strMac%" Config.cfg >ComputerCfg.txt
  21. ::::显示机器名. (从"ComputerCfg.txt"中分离出 机器名字段,并赋给变量"ComputerName")
  22. for /f "skip=2 tokens=1" %%N in (ComputerCfg.txt) do set ComputerName=%%N
  23. @echo  显示机器名 %ComputerName%
  24. ::::显示IP地址. (从"ComputerCfg.txt"中分离出 IP地址字段,并赋给变量"IPAddress")
  25. for /f "skip=2 tokens=3" %%I in (ComputerCfg.txt) do set IPAddress=%%I
  26. @echo 显示IP地址: %IPAddress%
  27. ::::显示网卡MAC地址.(从"ComputerCfg.txt"中分离出 MAC地址字段,并赋给变量"MacAddress")
  28. for /f "skip=2 tokens=2" %%M in (ComputerCfg.txt) do set MacAddress=%%M
  29. @echo 显示网卡MAC地址: %MacAddress%
  30. ::::创建注册表文件
  31. @echo Windows Registry Editor Version 5.00 >ComputerName.reg
  32. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName] >>ComputerName.reg
  33. ::::用变量"%ComputerName%"去替换实际的机器名
  34. @echo "ComputerName"="%ComputerName%" >>ComputerName.reg
  35. @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>ComputerName.reg
  36. ::::用变量"%ComputerName%"去替换实际的机器名
  37. @echo "NV Hostname"="%ComputerName%" >>ComputerName.reg
  38. @echo "Hostname"="%ComputerName%" >>ComputerName.reg
  39. ::::导入注册表文件。用的时候把" :: " 去掉
  40. regedit /s ComputerName.reg
  41. ::::修改IP 地址。用变量"%IPAddress%" 去替换实际的IP 地址
  42. :::--------------------------------------------------------------------------
  43. ::::####@请确保下一行命令中的“网络连接”的名称和电脑上的一致,如"无线网络连接","本地连接","本地连接1"等等。。。@##
  44. netsh interface ip set address "本地连接" source=static addr=%IPAddress% mask=255.255.255.0 gateway=192.168.1.1 gwmetric=1
  45. ::::####@请根据实际情况更改首选DNS,去掉下行命令前的::::就可执行@##
  46. netsh interface ip set dns "本地连接" static 202.96.134.133
  47. ::::####@请根据实际情况更改第二DNS,去掉下行命令前的::::就可执行@##
  48. netsh interface ip add dns "本地连接" 202.96.128.166 2
  49. :::--------------------------------------------------------------------------
复制代码

作者: lxzzr    时间: 2014-4-13 23:31

7下不是有getmac的命令么




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