无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9528|回复: 17
打印 上一主题 下一主题

[求助] 批处理获取有效IP,mac,计算机名

[复制链接]
跳转到指定楼层
1#
发表于 2017-8-7 00:27:15 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 窄口牛 于 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
复制代码


2#
 楼主| 发表于 2017-8-7 08:05: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
需要手工筛选
回复

使用道具 举报

3#
发表于 2017-8-7 13:20:57 来自手机 | 只看该作者
其实,如果不需要自动还原,ipconfig /all就可以满足需求。
回复

使用道具 举报

4#
 楼主| 发表于 2017-8-7 15:09:24 来自手机 | 只看该作者
是的,主要是想减去人工筛选。
回复

使用道具 举报

5#
发表于 2017-8-16 16:39:07 | 只看该作者
本帖最后由 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)
复制代码


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

使用道具 举报

6#
 楼主| 发表于 2017-8-28 20:16:50 | 只看该作者
  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. )
复制代码

拼凑了一个这样的

点评

你这是单位外网用的? 刚试了,家用不好用,出来三个IP,而且命令窗口还findstr错误 我用下面的命令可以正常显示。  详情 回复 发表于 2017-8-29 19:48
回复

使用道具 举报

7#
 楼主| 发表于 2017-8-29 09:17:20 来自手机 | 只看该作者
多网卡已连接就不好使了
回复

使用道具 举报

8#
发表于 2017-8-29 19:48:23 | 只看该作者
窄口牛 发表于 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
复制代码

点评

兄台的命令不错,不过参数好像错了?一般单位都使用dhcp来分配IP,所以,dhcpenabled还是要为true的,输出为文本文本比html应该更方便些? 仅供参考  详情 回复 发表于 2017-9-1 10:46
回复

使用道具 举报

9#
 楼主| 发表于 2017-8-29 20:30:28 | 只看该作者
我那个瞎弄得,这个好用。
回复

使用道具 举报

10#
发表于 2017-9-1 10:46:56 | 只看该作者
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 "="
复制代码

点评

意思是自动获取? 我这是显示手动分配的IP,自动的还备份个什么……  详情 回复 发表于 2017-9-1 16:49
回复

使用道具 举报

11#
发表于 2017-9-1 16:49:19 来自手机 | 只看该作者
kingshui 发表于 2017-9-1 10:46
兄台的命令不错,不过参数好像错了?一般单位都使用dhcp来分配IP,所以,dhcpenabled还是要为true的, ...

意思是自动获取?

我这是显示手动分配的IP,自动的还备份个什么……
回复

使用道具 举报

12#
 楼主| 发表于 2017-9-1 17:31:50 | 只看该作者
是的,手动才需要备份。
自动的没必要了
回复

使用道具 举报

13#
发表于 2017-9-2 07:19:36 | 只看该作者
支持顶下
回复

使用道具 举报

14#
 楼主| 发表于 2017-9-2 13:32:18 | 只看该作者
  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)
回复

使用道具 举报

15#
发表于 2017-9-2 23:04:15 | 只看该作者
  1. wmic nicconfig where "ipenabled='true' and not description like '%%Microsoft%%' and not description like '%%Vmware%%'" get description
复制代码
回复

使用道具 举报

16#
 楼主| 发表于 2017-9-2 23:11:45 来自手机 | 只看该作者
明白,谢谢指教。
回复

使用道具 举报

17#
 楼主| 发表于 2017-9-3 12:26:04 来自手机 | 只看该作者
绕了半天还是没啥用,还是不能解决有效问题,只能tracert到网关,然后在ipconfig里找距离这个网关最近的别的参数,批处理实现太困难了。
回复

使用道具 举报

18#
 楼主| 发表于 2020-1-16 19:33:42 | 只看该作者
更新为无需第三方版
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 08:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表