找回密码
 加入
搜索
查看: 2497|回复: 6

[AU3基础] 请教怎样获取指定网络连接的ip地址?

[复制链接]
发表于 2020-12-3 17:40:00 | 显示全部楼层 |阅读模式

我已经查到如何获取连接名称的办法,也知道可以通过@IPAddress1 @IPAddress2获取ip地址。
比如我电脑有多个网络连接,分别是本地连接1、本地连接2,现在我想获取本地连接2的ip地址,应该如何实现?
@IPAddress2不能对应指定的网卡名。
我也查到有些网友是用ipconfig获取一段文本,然后提取,想知道还有没有更简单一点的方法呢?谢谢!
发表于 2020-12-6 09:53:37 | 显示全部楼层
本帖最后由 yuantian 于 2020-12-6 10:38 编辑

我的思路大概是先根据网络连接名称,找到对应的MAC地址,然后 根据MAC地址,找到对应的IP


wmic nic where (not NetConnectionID=null) get productname,NetConnectionID,MACAddress
wmic nicconfig WHERE MACAddress="这里填写网卡MAC地址" get ipaddress /value

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2020-12-7 16:33:28 | 显示全部楼层
yuantian 发表于 2020-12-6 09:53
我的思路大概是先根据网络连接名称,找到对应的MAC地址,然后 根据MAC地址,找到对应的IP

感谢大神的好办法,不过我水平太低,还要请问,按照此方法得出来的ip,如何把它赋值给我定义的系统变量呢?可以不通过读写文件来实现吗?
发表于 2020-12-7 21:59:29 | 显示全部楼层
本帖最后由 yuantian 于 2020-12-7 22:40 编辑
bluecap 发表于 2020-12-7 16:33
感谢大神的好办法,不过我水平太低,还要请问,按照此方法得出来的ip,如何把它赋值给我定义的系统变量呢 ...

大概这个意思:


#include <Array.au3>


Global $GetIDName = "以太网"

$GetMacAddArray = StringRegExp(__Run_Bat_Get_Echo("wmic nic where (not NetConnectionID=null And NetConnectionID like '%" & $GetIDName & "%') get MACAddress /value"), "(?m)MACAddress=(.*)", 3, 1)
If IsArray($GetMacAddArray) Then
        For $a = 0 To UBound($GetMacAddArray) - 1
                $GetIP = __Run_Bat_Get_Echo('wmic nicconfig WHERE MACAddress="' & $GetMacAddArray[$a] & '" get ipaddress /value')
                $GetIPArray = StringRegExp($GetIP, '"(.*?)"', 3, 1)
                If IsArray($GetIPArray) Then _ArrayDisplay($GetIPArray, $GetMacAddArray[$a])
        Next
EndIf


Func __Run_Bat_Get_Echo($Command);运行批处理命令,并返回执行结果

        ;功能    :完整返回批处理命令的执行回显。不会出现乱码或者缺失。支持将多条命令连在一起执行
        ;注意    :支持带参数执行批处理。支持带变量执行批处理。但变量中请注意“'”标点符号的使用,不使用或需要成对使用。
        ;作者    :迷路轮回
        ;编写时间:2018-02-27
        ;最后更新:2019-02-03
        Local $iPID = Run(@ComSpec & ' /c ' & $Command, @ScriptDir, @SW_HIDE, 8)
        If Not @error Then
                ProcessWaitClose($iPID)
                Local $Result = BinaryToString(StdoutRead($iPID, 1, 1))
                Return $Result
        EndIf

EndFunc   ;==>__Run_Bat_Get_Echo
==================================
更新增加显示网络连接名称:



#include <Array.au3>


Global $GetIDName = "WLAN"

$GetIDResult = __Run_Bat_Get_Echo("wmic nic where (not NetConnectionID=null And NetConnectionID like '%" & $GetIDName & "%') get MACAddress,NetConnectionID /value")
$GetMacAddArray = StringRegExp($GetIDResult, "(?m)[MACAddress|NetConnectionID]=(.*)", 3, 1)
If IsArray($GetMacAddArray) Then
        For $a = 0 To UBound($GetMacAddArray) - 1 Step 2
                $GetIP = __Run_Bat_Get_Echo('wmic nicconfig WHERE MACAddress="' & $GetMacAddArray[$a] & '" get ipaddress /value')
                $GetIPArray = StringRegExp($GetIP, '"(.*?)"', 3, 1)
                If IsArray($GetIPArray) Then
                        _ArrayDisplay($GetIPArray, $GetMacAddArray[$a+1])
                Else
                        MsgBox(8192 + 16, "提示", "网络连接名称:" & $GetMacAddArray[$a+1] & @CRLF & "MAC地址:" & $GetMacAddArray[$a] & @CRLF & @CRLF &"未找到IP")
                EndIf
        Next
Else
        MsgBox(8192 + 16, "提示", '网络连接名称:"' & $GetIDName & '"' & @CRLF & '未找到,请确认后重试!')
EndIf


Func __Run_Bat_Get_Echo($Command);运行批处理命令,并返回执行结果

        ;功能    :完整返回批处理命令的执行回显。不会出现乱码或者缺失。支持将多条命令连在一起执行
        ;注意    :支持带参数执行批处理。支持带变量执行批处理。但变量中请注意“'”标点符号的使用,不使用或需要成对使用。
        ;作者    :迷路轮回
        ;编写时间:2018-02-27
        ;最后更新:2019-02-03
        Local $iPID = Run(@ComSpec & ' /c ' & $Command, @ScriptDir, @SW_HIDE, 8)
        If Not @error Then
                ProcessWaitClose($iPID)
                Local $Result = BinaryToString(StdoutRead($iPID, 1, 1))
                Return $Result
        EndIf

EndFunc   ;==>__Run_Bat_Get_Echo



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +20 收起 理由
bluecap + 20 很给力!

查看全部评分

发表于 2020-12-8 20:19:15 | 显示全部楼层

WMI 速度较慢,而且不一定能用。可以试试直接读注册表
 楼主| 发表于 2020-12-9 08:27:22 | 显示全部楼层

非常感谢!
 楼主| 发表于 2020-12-9 08:28:22 | 显示全部楼层
afan 发表于 2020-12-8 20:19
WMI 速度较慢,而且不一定能用。可以试试直接读注册表

好的,我也试试,谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 07:14 , Processed in 0.087542 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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