[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理为何获取不到正确的本地连接IP?

当我没有连接VPN时可以获取到正确的内网IP,比如我局域网IP是192.168.1.11
但我连接了VPN虚拟专用网路连接后,获取到的地址成了外网IP,代码要怎么样修改??
  1. @echo off FOR /f "tokens=2 delims=:" %%i in ('ipconfig^|find/i "ip address"') do Set IP=%%i
  2. echo IP:%IP%
  3. pause
复制代码
获取结果是192.168.1.11,但拨VPN后怎么都得不到这个结果,得到的是打开IP138显示的外网IP
我想在不断开VPN的情况下获取到本地连接的局域网地址192.168.1.11

[ 本帖最后由 q120072949 于 2011-3-11 09:47 编辑 ]

请在连接上vpn运行后将ipconfig /all的结果贴出来
***共同提高***

TOP

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>ipconfig/all

Windows IP Configuration

        Host Name . . . . . . . . . . . . : PCPCPCPCPCPCPCPCPCPC
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Mixed
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : Realtek PCIe GBE Family Controller
        Physical Address. . . . . . . . . : 00-30-67-47-66-C8
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.1.11
        Subnet Mask . . . . . . . . . . . : 255.255.0.0
        Default Gateway . . . . . . . . . : 192.168.1.1
        DNS Servers . . . . . . . . . . . : 202.101.224.68
                                            202.101.224.69

PPP adapter VPN:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
        Physical Address. . . . . . . . . : 00-53-45-00-00-00
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 169.254.33.10
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 169.254.33.10
        DNS Servers . . . . . . . . . . . : 203.141.128.33
                                            203.141.128.34

C:\Documents and Settings\Administrator>

TOP

以下是不通用解法

  1. @echo off
  2. for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|findstr /c:"IP Address"') do if not defined ip set "ip=%%a"
  3. echo IP:%ip:~1%
  4. pause>nul
复制代码
***共同提高***

TOP

膜拜啊,高人!
谢谢版主了!!
不通用解决方式意思是有时行不通么,我在自己电脑上弄好了,在另一台上面还是获取的外网IP哦,我搞不明白,
那台机器的IP:

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>ipconfig/all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : vm010
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Unknown
   IP Routing Enabled. . . . . . . . : Yes
   WINS Proxy Enabled. . . . . . . . : Yes

PPP adapter RAS Server (Dial In) Interface:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
   Physical Address. . . . . . . . . : 00-53-45-00-00-00
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 169.254.15.61
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . :

Ethernet adapter 本地连接:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   Physical Address. . . . . . . . . : 00-0C-29-7F-42-39
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.6.110
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :
   DNS Servers . . . . . . . . . . . : 203.141.128.33
                                       203.141.128.34

PPP adapter pppoe_native_wan_miniport:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
   Physical Address. . . . . . . . . : 00-53-45-00-00-00
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 125.198.93.91
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . : 0.0.0.0
   DNS Servers . . . . . . . . . . . : 202.225.94.247
                                       210.147.240.193
   NetBIOS over Tcpip. . . . . . . . : Disabled

C:\Documents and Settings\Administrator>

TOP

获取结果是
IP:169.254.15.61

但这台机器上IP138得到的IP却是:125.198.93.91

批处理获取到的IP在IPCONFIG/ALL里又成了第一个IP Address.
本地IP是192.168.6.110
得到的是第一个IP Address信息,
批处理能否识别出"本地连接"这个名字??电脑上有可能有VPN,PPTP,PPP,ADSL等

TOP

呵呵,本来想偷下懒的。。。

以下是通用解决方法:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  3.      if "%%a" equ "Ethernet adapter 本地连接" set "flag=a"
  4.      if defined flag set /a n+=1
  5.      if !n! equ 7 set "ip=%%b"
  6. )
  7. echo IP:%ip:~1%
  8. pause>nul
复制代码
***共同提高***

TOP

版主就是牛,呵呵,第一次的代码也没有偷懒啦!
各有千秋,各有利弊.
比如说当机器都是象第一种那样,只有本地连接(名字可能不是为:本地连接1或者本地连接2)和VPN的话
第一次的代码是对的,
如果名字都是"本地连接",那第一种第二种都是对的

可如果机器有双网卡,网线这次插的口不一样,本地连接成了"本地连接2"."本地连接3"之类的
那么第一种获取到的不是内网IP,第二种获取到的结果是:IP:~1(空值,呵呵)

批处理可以判断连接的类型么,比如不管本地连接还是本地连接1.2.3,前面一定有一行标识:Ethernet adapter
能否读取这个Ethernet adapter后面的IP Address值,这个IP Address值应该没有上面尴尬的意外出现吧
这样就算你把VPN名字改成"本地连接",但IPCONFIG/ALL显示的Ethernet adapter里的IP Address值就永远都是内网IP
哪怕有多网卡,或者ADSL,VPN什么的名字是"本地连接"也没关系

当然这是我的一点小想法,我刚刚接触批处理,上面2种代码我都学习了,已经可以满足我现在的要求了,呵呵,谢谢老版啦!

TOP

这个是显示出所有连接的IP,
http://www.bathome.net/thread-8949-1-19.html

for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do echo %%i

呵呵,只要内网IP就可以了

TOP

回复 8楼 的帖子

如果是多网卡,电脑是无法识别那个网卡是你需要获取的内网ip的(除非事先有规则),唉,电脑最终是不及人脑的。
***共同提高***

TOP

原帖由 batman 于 2010-9-20 16:51 发表
如果是多网卡,电脑是无法识别那个网卡是你需要获取的内网ip的(除非事先有规则),唉,电脑最终是不及人脑的。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

呵呵,老版误会我的意思了,这么说把,如果机器就一块网卡,但本地连接并不是叫"本地连接",或者VPN和ADSL被改成了本地连接
不管名字怎么修改,在CMD里运行IPCONFIG/ALL得到的结果中,Ethernet adapter后面的IP Address值始终是内网IP,

能否读取这个Ethernet adapter后面的IP Address值,这个IP Address值应该没有上面尴尬的意外出现吧
这样就算你把VPN名字改成"本地连接",但IPCONFIG/ALL显示的Ethernet adapter里的IP Address值就永远都是内网IP
或者网卡不叫本地连接,ADSL,VPN什么的名字是"本地连接"也没关系

这样的话就不局限于网线插上后网卡显示名字,得到的代码始终是内网IP

TOP

如果有三片或三片以上的网卡呢(其中只有一片是连接外网的,其他的都是连接内网的)
***共同提高***

TOP

对的,每个连接后面都有IP Address信息

5楼就是有3个连接,Ethernet adapter后面的IP Address就是内网IP信息啊,只需要读取这个后面的IP Address

TOP

难道版主的意思是:IPCONFIG/ALL里面的Ethernet adapter不一定表示本地连接???
或者说本地连接在IPCONFIG/ALL里面不一定叫做Ethernet adapter
那么Ethernet adapter这个是什么意思?百度得到的是:以太网适配器,通俗说就是网卡

就按照Ethernet adapter是本地连接内网IP,怎么获取到Ethernet adapter后面的IP Address

而不是获取其他的比如:
Windows IP Configuration
PPP adapter RAS Server (Dial In) Interface
PPP adapter pppoe_native_wan_miniport
.......
之类

只需要得到Ethernet adapter后面的IP Address即可

TOP

这个问题我还是没弄好
不知道怎么得到Ethernet adapter后面的IP Address
- -!

TOP

返回列表