找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 38410|回复: 13

[文本处理] 使用批处理脚本获取本机真实IP地址

[复制链接]
发表于 2019-1-18 09:25:29 | 显示全部楼层 |阅读模式
因本机安装了虚拟机,所以多了2个虚拟网卡

所以编写以下代码过滤虚拟网卡,获取真实IP,但是有BUG,如果本地IP为固定IP地址,则会显示"默认"。

以下是动态IP地址获取状态,正常状态:

以下是固态IP地址获取,不正常

请问改如何修改
  1. @echo on
  2. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  3. set IP=%%a
  4. )
  5. echo 你的局域网IP是:
  6. echo %IP%
  7. pause>nul
复制代码
发表于 2019-1-18 09:46:07 | 显示全部楼层
把 route print 的完整结果发出来,不要截图。

怎样把CMD窗口里的结果复制出来?
http://bbs.bathome.net/thread-3473-1-1.html
 楼主| 发表于 2019-1-18 10:00:07 | 显示全部楼层
回复 2# Batcher

  1. C:\Users\king\Desktop>for /F "tokens=4" %a in ('route print|findstr 0.0.0.0.*0.0.0.0') do (set IP=%a )

  2. C:\Users\king\Desktop>(set IP=192.168.0.127 )

  3. C:\Users\king\Desktop>(set IP=默认 )

  4. C:\Users\king\Desktop>echo 你的局域网IP是:
  5. 你的局域网IP是:

  6. C:\Users\king\Desktop>echo 默认
  7. 默认

  8. C:\Users\king\Desktop>pause1>nul
复制代码
发表于 2019-1-18 10:01:42 | 显示全部楼层
  1. @echo off

  2. for /f "tokens=1,2,3 delims=={,}" %%a in ('wmic NICCONFIG where "IPEnabled='TRUE'" get DefaultIPGateway^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value^|findstr "={"') do (
  3.         if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
  4.         ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
  5.         ) else if "%%a"=="IPAddress" (set "IP=%%~b"
  6.         ) else if "%%a"=="IPSubnet" (set "Mask=%%~b")
  7.         if defined Gate if defined Mask goto :show       
  8. )
  9. :show
  10.         echo;I P 地址:        %IP%
  11.         echo;子网掩码:        %Mask%
  12.         echo;默认网关:        %Gate%
  13.         echo;首选 DNS:        %DSN1%
  14.         echo;备用 DNS:        %DSN2%
  15. pause
复制代码
发表于 2019-1-18 10:01:44 | 显示全部楼层
回复 3# cidsxwf


    可能是我表达不清楚,打开一个CMD窗口,单独执行命令 route print 的完整结果发出来
 楼主| 发表于 2019-1-18 10:09:24 | 显示全部楼层
回复 5# Batcher
  1. Microsoft Windows [版本 10.0.17763.253]
  2. (c) 2018 Microsoft Corporation。保留所有权利。

  3. C:\Users\king>route print
  4. ===========================================================================
  5. 接口列表
  6. 15...ac d1 b8 2e 44 47 ......Realtek RTL8723BE Wireless LAN 802.11n PCI-E NIC
  7. 20...ae d1 b8 2e 44 47 ......Microsoft Wi-Fi Direct Virtual Adapter
  8. 14...ac d1 b8 2e 44 47 ......Microsoft Wi-Fi Direct Virtual Adapter #2
  9.   9...68 f7 28 ab 12 0a ......Intel(R) Ethernet Connection (3) I218-V
  10. 17...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
  11.   3...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
  12. 18...ac d1 b8 2e 44 48 ......Bluetooth Device (Personal Area Network)
  13.   1...........................Software Loopback Interface 1
  14. ===========================================================================

  15. IPv4 路由表
  16. ===========================================================================
  17. 活动路由:
  18. 网络目标        网络掩码          网关       接口   跃点数
  19.           0.0.0.0          0.0.0.0      192.168.0.1    192.168.0.112     35
  20.         127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
  21.         127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  22.   127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  23.       192.168.0.0    255.255.255.0            在链路上     192.168.0.112    291
  24.     192.168.0.112  255.255.255.255            在链路上     192.168.0.112    291
  25.     192.168.0.255  255.255.255.255            在链路上     192.168.0.112    291
  26.     192.168.237.0    255.255.255.0            在链路上     192.168.237.1    291
  27.     192.168.237.1  255.255.255.255            在链路上     192.168.237.1    291
  28.   192.168.237.255  255.255.255.255            在链路上     192.168.237.1    291
  29.     192.168.247.0    255.255.255.0            在链路上     192.168.247.1    291
  30.     192.168.247.1  255.255.255.255            在链路上     192.168.247.1    291
  31.   192.168.247.255  255.255.255.255            在链路上     192.168.247.1    291
  32.         224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
  33.         224.0.0.0        240.0.0.0            在链路上     192.168.0.112    291
  34.         224.0.0.0        240.0.0.0            在链路上     192.168.237.1    291
  35.         224.0.0.0        240.0.0.0            在链路上     192.168.247.1    291
  36.   255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  37.   255.255.255.255  255.255.255.255            在链路上     192.168.0.112    291
  38.   255.255.255.255  255.255.255.255            在链路上     192.168.237.1    291
  39.   255.255.255.255  255.255.255.255            在链路上     192.168.247.1    291
  40. ===========================================================================
  41. 永久路由:
  42.   无

  43. IPv6 路由表
  44. ===========================================================================
  45. 活动路由:
  46. 接口跃点数网络目标                网关
  47.   1    331 ::1/128                  在链路上
  48.   9    291 fe80::/64                在链路上
  49. 17    291 fe80::/64                在链路上
  50.   3    291 fe80::/64                在链路上
  51.   3    291 fe80::b5d2:633f:e766:7765/128
  52.                                     在链路上
  53. 17    291 fe80::d927:d221:67cd:7621/128
  54.                                     在链路上
  55.   9    291 fe80::e46b:4050:4f36:7a14/128
  56.                                     在链路上
  57.   1    331 ff00::/8                 在链路上
  58.   9    291 ff00::/8                 在链路上
  59. 17    291 ff00::/8                 在链路上
  60.   3    291 ff00::/8                 在链路上
  61. ===========================================================================
  62. 永久路由:
  63.   无

  64. C:\Users\king>
复制代码
 楼主| 发表于 2019-1-18 10:12:31 | 显示全部楼层
回复 4# yhcfsr
感谢大佬
发表于 2019-1-18 11:38:44 | 显示全部楼层
回复 6# cidsxwf


没有看到“默认”这两个字,执行这个命令的结果呢:
  1. route print|findstr 0.0.0.0.*0.0.0.0
复制代码
发表于 2019-1-18 11:49:28 | 显示全部楼层
  1. for /f "tokens=4" %a in ('route print ^| find " 0.0.0.0 "') do echo %a
复制代码
你的 route print|findstr 0.0.0.0.*0.0.0.0 已经是错的了。而且还多了一个点
发表于 2019-1-18 15:37:18 | 显示全部楼层
本帖最后由 ivor 于 2019-1-18 15:40 编辑

powershell
  1. (Test-Connection -ComputerName $env:ComputerName -Count 1).IPV4Address.IPAddressToString
复制代码
cmd
  1. powershell -c "(Test-Connection -ComputerName $env:ComputerName -Count 1).IPV4Address.IPAddressToString"
复制代码
发表于 2019-1-18 16:08:53 | 显示全部楼层
本帖最后由 窄口牛 于 2019-1-18 16:56 编辑

回复 4# yhcfsr


     这个加上mac地址 计算机名 网卡名称呢?
  1. @echo off

  2. for /f "tokens=1,2,3,4,5,6 delims=={,}" %%a in ('wmic NICCONFIG where "IPEnabled='TRUE'" get Description^,MacAddress^,ServiceName^,DefaultIPGateway^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value^|findstr "={"') do (
  3.         if "%%a"=="Description"        (set "Name=%%~b"
  4.         ) else if "%%a"=="MacAddress" (set "MAC=%%~b"
  5.         ) else if "%%a"=="ServiceName" (set "Chip=%%~b"
  6.         ) else if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
  7.         ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
  8.         ) else if "%%a"=="IPAddress" (set "IP=%%~b"
  9.         ) else if "%%a"=="IPSubnet" (set "Mask=%%~b")
  10.         if defined Gate if defined Mask goto :show       
  11. )
  12. :show
  13.         echo;网卡名称: %Name%
  14.         echo;MAC 地址: %MAC%
  15.         echo;网卡芯片: %Chip%
  16.         echo;I P 地址:        %IP%
  17.         echo;子网掩码:        %Mask%
  18.         echo;默认网关:        %Gate%
  19.         echo;首选 DNS:        %DSN1%
  20.         echo;备用 DNS:        %DSN2%
  21. pause
复制代码
照猫画虎,哪里有问题?
发表于 2019-1-18 18:35:05 | 显示全部楼层
回复 11# 窄口牛
  1. @echo off

  2. for /f "tokens=1,2,3 delims=={,}" %%a in ('wmic NICCONFIG where "IPEnabled='TRUE'" get Description^,MacAddress^,ServiceName^,DefaultIPGateway^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value^|findstr "="') do (
  3.         if "%%a"=="Description"        (set "Name=%%~b"
  4.         ) else if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
  5.         ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
  6.         ) else if "%%a"=="IPAddress" (set "IP=%%~b"
  7.         ) else if "%%a"=="IPSubnet" (set "Mask=%%~b"
  8.         ) else if "%%a"=="MACAddress" (set "MAC=%%~b"
  9.         ) else if "%%a"=="ServiceName" (set "Chip=%%~b")
  10.         if defined Gate if defined Chip goto :show

  11. )

  12. :show
  13.         echo;网卡名称:        %Name%
  14.         echo;MAC 地址:        %MAC%
  15.         echo;网卡芯片:        %Chip%
  16.         echo;I P 地址:        %IP%
  17.         echo;子网掩码:        %Mask%
  18.         echo;默认网关:        %Gate%
  19.         echo;首选 DNS:        %DSN1%
  20.         echo;备用 DNS:        %DSN2%
  21. pause
复制代码
发表于 2019-1-18 20:20:43 | 显示全部楼层
明白了,谢谢!
发表于 2020-11-14 14:36:58 | 显示全部楼层
回复  窄口牛
yhcfsr 发表于 2019-1-18 18:35



    大佬,您好,你的批处理如果是只连接了单有线网卡可以获取到,但wifi的网卡一起连接的时候,只能获取到WIFI的信息,能否把2个网卡的信息一起获取到?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:12 , Processed in 0.034849 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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