本帖最后由 yuantian 于 2020-12-7 22:40 编辑
大概这个意思:
#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
|