Hallo Leute,
ich möchte von einem aktiven Netzwerkadapter diverse Werte in einer Msgbox anzeigen lassen.
Dazu speichere ich die ipconfig /all in eine txt Datei. In dieser Datei suche ich nach einer IPv4
Adresse (die in diesem Fall nur in dem Block des aktiven Netzwerkadapters steht).
Von dieser Zeile suche ich nach oben und unten die nächsten Leerzeilen, was Anfang und Ende
des jeweiligen Adapters ist.
Wenn ich auf diesen Weg den Bereich eingrenzt habe, schreibe ich die gewünschten Werte in ein Array
und gebe diese in der Msgbox aus.
So weit der Stand und macht auch das was es soll...
..aber irgendwie kommt mir das alles zu kompliziert vor wie ich das angehe.
Vielleicht kann mir mal jemand seine Ideen dazu äußern wie er oder sie
da dran gehen würden.
Damit meine ich nicht, wie ich mir alternativ die gewünschten Werte herzaubere(kann aber auch gerne erwähnt werden)
sondern eher wie ich die Informationen "eleganter" aus der Textdatei bekomme.
Die ipconfig /all sieht ja von Rechner zu Rechner verschieden aus (Anzahl der Adapter, Variable Reihenfolgen etc).
Gruß Damion
Spoiler anzeigen
#include <Constants.au3>
#include <Inet.au3>
#include <File.au3>
#include <Array.au3>
;Deklaration der benötigten Arrays
Local $WerteArray[7]
Local $SucheArray[7]
;Suchbegriffe dem SucheArray zugewiesen
$SucheArray[0] = "IPv4"
$SucheArray[1] = "Subnetzmaske"
$SucheArray[2] = "Standardgateway"
$SucheArray[3] = "Physi"
$SucheArray[4] = "DHCP aktiviert"
$SucheArray[5] = "DHCP-Server"
$SucheArray[6] = "DNS-Server"
;Aufruf der IPCONFIG /all Routine mit erstellen und speichern in die Textdatei IP.txt
Run('cmd /c ipconfig /all > "IP.txt"', "", @SW_HIDE)
Sleep(500)
;Zählen der Zeilen in der Textdatei IP.txt
$Zeilen_Count = _FileCountLines("IP.txt")
;Suche nach verbundener Schnittstelle, anhand der IPv4 Adresse
For $i = 1 To $Zeilen_Count Step 1
$Zeile = FileReadLine("IP.txt", $i)
$Suche = StringInStr($Zeile, $SucheArray[0])
If $Suche > 0 Then
ExitLoop
ElseIf $i=$Zeilen_Count Then
msgbox(64,"Netzwerkeinstellungen","Es sind keine Netzwerkadapter verbunden.")
Exit
EndIf
Next
;Suche nach erster Leerzeile, ausgehend von IPv4 Adresse
For $Start = $i To $i - $i + 1 Step -1
$Zeile = FileReadLine("IP.txt", $Start)
If $Zeile = "" Then
ExitLoop
EndIf
Next
;Suche nach nächster Leerzeile, ausgehend von IPv4 Adresse
For $Stop = $i To $Zeilen_Count
$Zeile = FileReadLine("IP.txt", $Stop)
If $Zeile = "" Then
ExitLoop
EndIf
Next
; Beschreiben des Arrays mit den gesuchten Werten
For $Filter = $Start To $Stop
For $Array = 0 To UBound($SucheArray) - 1
$Zeile = FileReadLine("IP.txt", $Filter)
$Suche = StringInStr($Zeile, $SucheArray[$Array])
If $Suche > 0 Then
$SSplit = StringSplit($Zeile, ":", 2)
$WerteArray[$Array] = $SSplit[1]
ExitLoop
EndIf
Next
Next
MsgBox(64, "Netzwerkeinstellungen", @CRLF _
& FileReadLine("IP.txt", $Start - 1) & @CRLF _
& "---------------------------------------" & @CRLF _
& "IPv4 Adresse = " & StringTrimRight($WerteArray[0], 12) & @CRLF _
& "Subnetzmaske = " & $WerteArray[1] & @CRLF _
& "Standart Gateway = " & $WerteArray[2] & @CRLF _
& "MAC Adresse = " & $WerteArray[3] & @CRLF _
& "DHCP aktiviert = " & $WerteArray[4] & @CRLF _
& "DHCP Server = " & $WerteArray[5] & @CRLF _
& "DNS Server =" & $WerteArray[6])
FileDelete("IP.txt")