标题: [文本处理] 使用批处理脚本获取本机真实IP地址 [打印本页]
作者: cidsxwf 时间: 2019-1-18 09:25 标题: 使用批处理脚本获取本机真实IP地址
因本机安装了虚拟机,所以多了2个虚拟网卡
[attach]11737[/attach]
所以编写以下代码过滤虚拟网卡,获取真实IP,但是有BUG,如果本地IP为固定IP地址,则会显示"默认"。
以下是动态IP地址获取状态,正常状态:
以下是固态IP地址获取,不正常
请问改如何修改- @echo on
- for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
- set IP=%%a
- )
- echo 你的局域网IP是:
- echo %IP%
- pause>nul
复制代码
作者: Batcher 时间: 2019-1-18 09:46
把 route print 的完整结果发出来,不要截图。
怎样把CMD窗口里的结果复制出来?
http://bbs.bathome.net/thread-3473-1-1.html
作者: cidsxwf 时间: 2019-1-18 10:00
回复 2# Batcher - 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 )
-
- C:\Users\king\Desktop>(set IP=192.168.0.127 )
-
- C:\Users\king\Desktop>(set IP=默认 )
-
- C:\Users\king\Desktop>echo 你的局域网IP是:
- 你的局域网IP是:
-
- C:\Users\king\Desktop>echo 默认
- 默认
-
- C:\Users\king\Desktop>pause1>nul
复制代码
作者: yhcfsr 时间: 2019-1-18 10:01
- @echo off
-
- for /f "tokens=1,2,3 delims=={,}" %%a in ('wmic NICCONFIG where "IPEnabled='TRUE'" get DefaultIPGateway^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value^|findstr "={"') do (
- if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
- ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
- ) else if "%%a"=="IPAddress" (set "IP=%%~b"
- ) else if "%%a"=="IPSubnet" (set "Mask=%%~b")
- if defined Gate if defined Mask goto :show
- )
- :show
- echo;I P 地址: %IP%
- echo;子网掩码: %Mask%
- echo;默认网关: %Gate%
- echo;首选 DNS: %DSN1%
- echo;备用 DNS: %DSN2%
- pause
复制代码
作者: Batcher 时间: 2019-1-18 10:01
回复 3# cidsxwf
可能是我表达不清楚,打开一个CMD窗口,单独执行命令 route print 的完整结果发出来
作者: cidsxwf 时间: 2019-1-18 10:09
回复 5# Batcher - Microsoft Windows [版本 10.0.17763.253]
- (c) 2018 Microsoft Corporation。保留所有权利。
-
- C:\Users\king>route print
- ===========================================================================
- 接口列表
- 15...ac d1 b8 2e 44 47 ......Realtek RTL8723BE Wireless LAN 802.11n PCI-E NIC
- 20...ae d1 b8 2e 44 47 ......Microsoft Wi-Fi Direct Virtual Adapter
- 14...ac d1 b8 2e 44 47 ......Microsoft Wi-Fi Direct Virtual Adapter #2
- 9...68 f7 28 ab 12 0a ......Intel(R) Ethernet Connection (3) I218-V
- 17...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
- 3...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
- 18...ac d1 b8 2e 44 48 ......Bluetooth Device (Personal Area Network)
- 1...........................Software Loopback Interface 1
- ===========================================================================
-
- IPv4 路由表
- ===========================================================================
- 活动路由:
- 网络目标 网络掩码 网关 接口 跃点数
- 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.112 35
- 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
- 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331
- 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
- 192.168.0.0 255.255.255.0 在链路上 192.168.0.112 291
- 192.168.0.112 255.255.255.255 在链路上 192.168.0.112 291
- 192.168.0.255 255.255.255.255 在链路上 192.168.0.112 291
- 192.168.237.0 255.255.255.0 在链路上 192.168.237.1 291
- 192.168.237.1 255.255.255.255 在链路上 192.168.237.1 291
- 192.168.237.255 255.255.255.255 在链路上 192.168.237.1 291
- 192.168.247.0 255.255.255.0 在链路上 192.168.247.1 291
- 192.168.247.1 255.255.255.255 在链路上 192.168.247.1 291
- 192.168.247.255 255.255.255.255 在链路上 192.168.247.1 291
- 224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
- 224.0.0.0 240.0.0.0 在链路上 192.168.0.112 291
- 224.0.0.0 240.0.0.0 在链路上 192.168.237.1 291
- 224.0.0.0 240.0.0.0 在链路上 192.168.247.1 291
- 255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
- 255.255.255.255 255.255.255.255 在链路上 192.168.0.112 291
- 255.255.255.255 255.255.255.255 在链路上 192.168.237.1 291
- 255.255.255.255 255.255.255.255 在链路上 192.168.247.1 291
- ===========================================================================
- 永久路由:
- 无
-
- IPv6 路由表
- ===========================================================================
- 活动路由:
- 接口跃点数网络目标 网关
- 1 331 ::1/128 在链路上
- 9 291 fe80::/64 在链路上
- 17 291 fe80::/64 在链路上
- 3 291 fe80::/64 在链路上
- 3 291 fe80::b5d2:633f:e766:7765/128
- 在链路上
- 17 291 fe80::d927:d221:67cd:7621/128
- 在链路上
- 9 291 fe80::e46b:4050:4f36:7a14/128
- 在链路上
- 1 331 ff00::/8 在链路上
- 9 291 ff00::/8 在链路上
- 17 291 ff00::/8 在链路上
- 3 291 ff00::/8 在链路上
- ===========================================================================
- 永久路由:
- 无
-
- C:\Users\king>
复制代码
作者: cidsxwf 时间: 2019-1-18 10:12
回复 4# yhcfsr
感谢大佬
作者: Batcher 时间: 2019-1-18 11:38
回复 6# cidsxwf
没有看到“默认”这两个字,执行这个命令的结果呢:- route print|findstr 0.0.0.0.*0.0.0.0
复制代码
作者: hnfeng 时间: 2019-1-18 11:49
- 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 已经是错的了。而且还多了一个点
作者: ivor 时间: 2019-1-18 15:37
本帖最后由 ivor 于 2019-1-18 15:40 编辑
powershell- (Test-Connection -ComputerName $env:ComputerName -Count 1).IPV4Address.IPAddressToString
复制代码
cmd- powershell -c "(Test-Connection -ComputerName $env:ComputerName -Count 1).IPV4Address.IPAddressToString"
复制代码
作者: 窄口牛 时间: 2019-1-18 16:08
本帖最后由 窄口牛 于 2019-1-18 16:56 编辑
回复 4# yhcfsr
这个加上mac地址 计算机名 网卡名称呢?- @echo off
-
- 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 (
- if "%%a"=="Description" (set "Name=%%~b"
- ) else if "%%a"=="MacAddress" (set "MAC=%%~b"
- ) else if "%%a"=="ServiceName" (set "Chip=%%~b"
- ) else if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
- ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
- ) else if "%%a"=="IPAddress" (set "IP=%%~b"
- ) else if "%%a"=="IPSubnet" (set "Mask=%%~b")
- if defined Gate if defined Mask goto :show
- )
- :show
- echo;网卡名称: %Name%
- echo;MAC 地址: %MAC%
- echo;网卡芯片: %Chip%
- echo;I P 地址: %IP%
- echo;子网掩码: %Mask%
- echo;默认网关: %Gate%
- echo;首选 DNS: %DSN1%
- echo;备用 DNS: %DSN2%
- pause
复制代码
照猫画虎,哪里有问题?
作者: yhcfsr 时间: 2019-1-18 18:35
回复 11# 窄口牛 - @echo off
-
- 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 (
- if "%%a"=="Description" (set "Name=%%~b"
- ) else if "%%a"=="DefaultIPGateway" (set "Gate=%%~b"
- ) else if "%%a"=="DNSServerSearchOrder" (set "DSN1=%%~b"&set "DSN2=%%~c"
- ) else if "%%a"=="IPAddress" (set "IP=%%~b"
- ) else if "%%a"=="IPSubnet" (set "Mask=%%~b"
- ) else if "%%a"=="MACAddress" (set "MAC=%%~b"
- ) else if "%%a"=="ServiceName" (set "Chip=%%~b")
- if defined Gate if defined Chip goto :show
-
- )
-
- :show
- echo;网卡名称: %Name%
- echo;MAC 地址: %MAC%
- echo;网卡芯片: %Chip%
- echo;I P 地址: %IP%
- echo;子网掩码: %Mask%
- echo;默认网关: %Gate%
- echo;首选 DNS: %DSN1%
- echo;备用 DNS: %DSN2%
- pause
复制代码
作者: 窄口牛 时间: 2019-1-18 20:20
明白了,谢谢!
作者: uranus12 时间: 2020-11-14 14:36
回复 窄口牛
yhcfsr 发表于 2019-1-18 18:35
大佬,您好,你的批处理如果是只连接了单有线网卡可以获取到,但wifi的网卡一起连接的时候,只能获取到WIFI的信息,能否把2个网卡的信息一起获取到?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |