ConsoleWrite(_GetSubnetBasedOnIP('здесь IP'))
Func _GetSubnetBasedOnIP($theIP)
if NOT _isIPaddr($theIP) Then Return SetError(1, 0, 0)
Const $wbemFlagReturnImmediately = 0x10
Const $wbemFlagForwardOnly = 0x20
Local $colNICs="", $NIC, $strQuery, $objWMIService, $retVal = ""
$strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration"
$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
If @error then Return SetError(3, 0, 0)
$colNICs = $objWMIService.ExecQuery($strQuery, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colNICs) Then
For $NIC in $colNICs
if _isIPaddr($NIC.IPAddress(0)) then
if $NIC.IPAddress(0) = $theIP Then
if _isIPaddr($NIC.IPSubnet(0)) then
$retVal = $NIC.IPSubnet(0)
ExitLoop
EndIf
EndIf
EndIf
Next
EndIf
if $retVal = "" Then Return SetError(2, 0, 0)
Return $retVal
EndFunc
Func _isIPaddr($sIPAddr)
If NOT StringRegExp($sIPAddr, "^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$") Then Return SetError(1, 0, False)
Return True
EndFunc
; Автор https://www.autoitscript.com/forum/topic/155078-how-to-easily-get-the-subnet-mask/?page=1