无忧启动论坛

标题: 批处理获取有效IP,mac,计算机名 [打印本页]

作者: 窄口牛    时间: 2017-8-7 00:27
标题: 批处理获取有效IP,mac,计算机名
本帖最后由 窄口牛 于 2020-1-16 19:33 编辑

思路是这样的,tracert本地dns,取第一个值得到网关,然后ipconfig /all,得到网关和mac,然后将ip,网关,mac输出到计算机名的文本中。
因为一般单位管理都是要管外网的,所以这个思路应该成立。
获取有效网络信息.rar (1.65 KB, 下载次数: 92)
更新为无须第三方版
NT6
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. wget -O temp "http://ip.chinaz.com/getip.aspx"
  4. cls
  5. for /f "tokens=2 delims='" %%i in (temp) do set result=%%i
  6. del temp 2>nul
  7. for /f "tokens=8 delims= " %%a in ('tracert -d 114.114.114.114') do echo %%a>>temp1
  8. for /f "delims=" %%i in ('ipconfig /all') do (
  9. call,set t=%%i
  10. call,echo %%t: =%%>>temp
  11. )
  12. for /f "tokens=1,3 delims=:" %%a in ('findstr ^/n ^/g:temp1 temp ^|find "默认网关"') do set Line=%%a&set Gateway=%%b
  13. set /a a=%Line%-9
  14. set /a b=%Line%-8
  15. set /a c=%Line%-7
  16. set /a d=%Line%-6
  17. set /a e=%Line%-4
  18. set /a f=%Line%-3
  19. set /a g=%Line%-2
  20. set /a h=%Line%-1
  21. set /a i=%Line%+1
  22. set /a j=%Line%+3
  23. set /a k=%Line%+4
  24. set /a l=%Line%+5
  25. echo 外网IP是: %result%
  26. for /f "tokens=1,2,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%i%"') do echo %%b>temp2
  27. for /f "tokens=1 delims=." %%a in ('type temp2') do (set ans=%%a&del temp2)
  28. IF /I "%ans%" EQU "DHCP服务器" (
  29. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%a%"') do (echo 网卡名称:%%b)
  30. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%b%"') do (echo MCA地址:%%b)
  31. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%e%"') do (echo IP地址为:%%b)
  32. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%f%"') do (echo 子网掩码:%%b)
  33. echo 默认网关:%Gateway%
  34. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%k%"') do (echo 首选DNS:%%b)
  35. for /f "tokens=1,2 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%l%"') do (echo 备用DNS:%%b)
  36. del temp
  37. echo 下面是出网路由路径
  38. type temp1
  39. del temp1
  40. ) ELSE (
  41. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%c%"') do (echo 网卡名称:%%b)
  42. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%d%"') do (echo MCA地址:%%b)
  43. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%g%"') do (echo IP地址为:%%b)
  44. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%h%"') do (echo 子网掩码:%%b)
  45. echo 默认网关:%Gateway%
  46. for /f "tokens=1,3 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%j%"') do (echo 首选DNS:%%b)
  47. for /f "tokens=1,2 delims=:" %%a in ('findstr /N . temp ^|findstr /b "%k%"') do (echo 备用DNS:%%b)
  48. del temp
  49. echo 下面是出网路由路径
  50. type temp1
  51. del temp1
  52. )
  53. pause>nul
复制代码

NT5
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. wget -O temp "http://ip.chinaz.com/getip.aspx"
  4. cls
  5. for /f "tokens=2 delims='" %%i in (temp) do set result=%%i
  6. del temp 2>nul
  7. for /f "skip=2 tokens=8 delims= " %%a in ('tracert -d 114.114.114.114') do echo %%a>>temp1
  8. for /f "delims=" %%i in ('ipconfig /all') do (
  9. SET /a n+=1
  10. call,set t=%%i
  11. call,echo !n!:%%t: =%%>>temp
  12. )
  13. for /f "tokens=1,2,3 delims=:" %%a in ('findstr /G:temp1 temp ^|find "DefaultGateway"') do (
  14. set Line=%%a&set Gateway=%%c
  15. )
  16. set /a a=%Line%-6
  17. set /a b=%Line%-5
  18. set /a c=%Line%-4
  19. set /a d=%Line%-2
  20. set /a e=%Line%-1
  21. set /a f=%Line%+1
  22. set /a g=%Line%+2
  23. set /a h=%Line%+3
  24. echo 外网IP是: %result%
  25. for /f "tokens=1,2,3 delims=:" %%a in ('findstr /B "%f%" temp') do echo %%b>temp2
  26. for /f "tokens=1 delims=." %%a in ('type temp2') do (set ans=%%a&del temp2)
  27. if /i "%ans%" EQU "DHCPServer" (
  28. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%a%" temp') do (echo 网卡名称:%%b)
  29. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%b%" temp') do (echo MCA地址:%%b)
  30. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%d%" temp') do (echo IP地址为:%%b)
  31. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%e%" temp') do (echo 子网掩码:%%b)
  32. echo 默认网关:%Gateway%
  33. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%g%" temp') do (echo 首选DNS:%%b)
  34. for /f "tokens=1,2 delims=:" %%a in ('findstr /B "%h%" temp') do (echo 备用DNS:%%b)
  35. del temp
  36. echo 下面是出网路由路径
  37. type temp1
  38. del temp1
  39. ) ELSE (
  40. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%b%" temp') do (echo 网卡名称:%%b)
  41. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%c%" temp') do (echo MCA地址:%%b)
  42. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%d%" temp') do (echo IP地址为:%%b)
  43. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%e%" temp') do (echo 子网掩码:%%b)
  44. echo 默认网关:%Gateway%
  45. for /f "tokens=1,3 delims=:" %%a in ('findstr /B "%f%" temp') do (echo 首选DNS:%%b)
  46. for /f "delims=" %%a in ('findstr /B "%g%" temp') do (echo 备用DNS:%%a)
  47. del temp
  48. echo 下面是出网路由路径
  49. type temp1
  50. del temp1
  51. )
  52. pause>nul
复制代码



作者: 窄口牛    时间: 2017-8-7 08:05
本帖最后由 窄口牛 于 2017-8-7 08:09 编辑

现在是这么拼凑的,nt5和nt6都正常工作。
  1. @echo off
  2. echo GET MAC ADDRESS
  3. getmac /v > %Computername%.txt
  4. for /f "skip=4 tokens=1,8" %%a in ('tracert -4 本地dns地址) do (
  5.     if "%%a" equ "1" echo 网关地址:%%b >> %Computername%.txt
  6. )
  7. pause
复制代码


得到结果
连接名          网络适配器      物理地址            传输名称                                                  
=============== =============== =================== ==========================================================
本地连接        Realtek PCIe GB 00-30-18-A4-A3-77   \Device\Tcpip_{10F76D38-5CF3-46CF-8EEF-41DC9ECEA4DF}      
VMware Network  VMware Virtual  00-50-56-C0-00-01   \Device\Tcpip_{648078BB-82BC-459C-BFEC-9A0F784EBAF5}      
VMware Network  VMware Virtual  00-50-56-C0-00-08   \Device\Tcpip_{8BC73126-1161-41C8-8E3A-9E8D0645D011}      
本地连接 3      Dell Wireless 1 C0-18-85-12-A8-A5   媒体已断开连接                                            
网关地址:192.168.2.254
需要手工筛选
作者: nttwqz    时间: 2017-8-7 13:20
其实,如果不需要自动还原,ipconfig /all就可以满足需求。
作者: 窄口牛    时间: 2017-8-7 15:09
是的,主要是想减去人工筛选。
作者: kingshui    时间: 2017-8-16 16:39
本帖最后由 kingshui 于 2017-8-16 16:45 编辑

取IP和mac。。。。

  1. for /f "tokens=1 delims= " %i in ('wmic nic get name^,index^|findstr /i "intel realtek"') do (wmic nicconfig where index=%i get ipaddress,macaddress /value)
复制代码


常用网卡牌子写上去试下。

作者: 窄口牛    时间: 2017-8-28 20:16
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=4 delims=: " %%i in ('nbtstat -n ^| findstr /i "ip"') do (
  4.     set "IP_addr=%%i"
  5.     set IP_addr=!IP_addr:~1,-1!
  6.     echo 本机IP为:!IP_addr!>>%Computername%.txt
  7. )
  8. for /F "skip=1 delims=" %%a in ('nbtstat -n') do (
  9.     set "IP_name=%%a"
  10.     set IP_name=!IP_name:~,-1!&goto 1
  11. )
  12. :1
  13. for /F "tokens=3 delims=:," %%m in ('getmac /v /fo csv ^|findstr !IP_name!') do (
  14.     set "IP_mac=%%m"
  15.     SET IP_mac=!IP_mac:~1,-1!
  16. echo 本机MAC为:!IP_mac!>>%Computername%.txt
  17. )
复制代码

拼凑了一个这样的
作者: 窄口牛    时间: 2017-8-29 09:17
多网卡已连接就不好使了
作者: nttwqz    时间: 2017-8-29 19:48
窄口牛 发表于 2017-8-28 20:16
拼凑了一个这样的

你这是单位外网用的?

刚试了,家用不好用,出来三个IP,而且命令窗口还findstr错误

我用下面的命令可以正常显示。

  1. wmic nicconfig where "dhcpenabled='false' and ipenabled='true'" get caption,ipaddress,ipsubnet,DefaultIPGateway,DNSServerSearchOrder,macaddress /format:hform >C:\IP.html
复制代码

作者: 窄口牛    时间: 2017-8-29 20:30
我那个瞎弄得,这个好用。
作者: kingshui    时间: 2017-9-1 10:46
nttwqz 发表于 2017-8-29 19:48
你这是单位外网用的?

刚试了,家用不好用,出来三个IP,而且命令窗口还findstr错误


兄台的命令不错,不过参数好像错了?一般单位都使用dhcp来分配IP,所以,dhcpenabled还是要为true的,输出为文本文本比html应该更方便些?

我应用到我的域脚本发粗吧,多谢!

仅供参考

  1. wmic nicconfig where "dhcpenabled='true' and ipenabled='true'" get  caption,ipaddress,macaddress /value|more|find "="
复制代码

作者: nttwqz    时间: 2017-9-1 16:49
kingshui 发表于 2017-9-1 10:46
兄台的命令不错,不过参数好像错了?一般单位都使用dhcp来分配IP,所以,dhcpenabled还是要为true的, ...

意思是自动获取?

我这是显示手动分配的IP,自动的还备份个什么……
作者: 窄口牛    时间: 2017-9-1 17:31
是的,手动才需要备份。
自动的没必要了
作者: foxesp    时间: 2017-9-2 07:19
支持顶下
作者: 窄口牛    时间: 2017-9-2 13:32
  1. @echo off
  2. setlocal ENABLEEXTENSIONS
  3. wget -O temp "http://ip.chinaz.com/getip.aspx"
  4. cls
  5. for /f "tokens=2 delims='" %%i in (temp) do set result=%%i
  6. del temp 2>nul
  7. echo 外网IP是: %result%
  8. for /f  "tokens=2* delims=]" %%i in ('wmic nicconfig where "dhcpenabled='true' and ipenabled='true'" 2^>nul get  caption /value ^|find "="') do echo %%i%%j>>temp1
  9. for /f  "tokens=2* delims=]" %%i in ('wmic nicconfig where "dhcpenabled='false' and ipenabled='true'" 2^>nul get  caption /value ^|find "="') do echo %%i%%j>>temp1
  10. for /f "tokens=* delims= " %%a in (temp1) do echo 网卡名称:%%a|findstr /v "VMware Microsoft"&del temp1 2>nul
  11. for /f  "tokens=2 delims==" %%i in ('wmic nicconfig where "dhcpenabled='true' and ipenabled='true'" 2^>nul get macaddress /value ^|find "="') do echo MAC地址:%%i|findstr /v "00:0C:29 00:50:56 02:00:4C"
  12. for /f  "tokens=2 delims==" %%i in ('wmic nicconfig where "dhcpenabled='false' and ipenabled='true'" 2^>nul get macaddress /value ^|find "="') do echo MAC地址:%%i|findstr /v "00:0C:29 00:50:56 02:00:4C"
  13. set "i=0.0.0.0" & set "j="
  14. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  15.   if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1")
  16. echo IP地址:%i%
  17. for /f tokens^=2^,4delims^=^" %%i in ('wmic nicconfig where "dhcpenabled='true' and ipenabled='true'" 2^>nul get IPSubnet /value ^|find "="') do echo 子网掩码:%%i %%j
  18. for /f tokens^=2^,4delims^=^" %%i in ('wmic nicconfig where "dhcpenabled='false' and ipenabled='true'" 2^>nul get IPSubnet /value ^|find "="') do echo 子网掩码:%%i %%j
  19. for /f "tokens=3" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  20.   if not defined k for %%b in (%%a) do set "g=%%b" & set "k=1")
  21. echo 默认网关:%g%
  22. for /f tokens^=2^,4delims^=^" %%i in ('wmic nicconfig where "dhcpenabled='true' and ipenabled='true'" 2^>nul get DNSServerSearchOrder /value ^|find "="') do echo 首选DNS:%%i&echo 备用DNS:%%j
  23. for /f tokens^=2^,4delims^=^" %%i in ('wmic nicconfig where "dhcpenabled='false' and ipenabled='true'" 2^>nul get DNSServerSearchOrder /value ^|find "="') do echo 首选DNS:%%i&echo 备用DNS:%%j
  24. echo 下面是出网路由路径显示
  25. echo 稍微有点慢,请等待
  26. for /F "skip=3 delims=" %%i in ('tracert -d 114.114.114.114') do echo %%i
  27. pause >nul
复制代码


最终定稿
获取有效网络数据.rar (385.24 KB, 下载次数: 61)
作者: nttwqz    时间: 2017-9-2 23:04
窄口牛 发表于 2017-9-2 13:32
最终定稿
  1. wmic nicconfig where "ipenabled='true' and not description like '%%Microsoft%%' and not description like '%%Vmware%%'" get description
复制代码

作者: 窄口牛    时间: 2017-9-2 23:11
明白,谢谢指教。
作者: 窄口牛    时间: 2017-9-3 12:26
绕了半天还是没啥用,还是不能解决有效问题,只能tracert到网关,然后在ipconfig里找距离这个网关最近的别的参数,批处理实现太困难了。
作者: 窄口牛    时间: 2020-1-16 19:33
更新为无需第三方版




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3