Status des netzwerkadapters überwachen
hallo!
ich hab das problem, dass bei meinem wlan die verbindung zum router hin und wieder abreisst. das netzwerksymbol unten rechts im tray ist dann mit einem roten kreuz versehen. der netzwerkadapter macht auch keine anstalten, sich neu zu verbindungen, obwohl die einstellung gesetzt ist.
meine lösung war bisher immer in einem script per
c:\devcon\i386\devcon.exe restart "USB\Vid_0df6&Pid_9071"
den kompletten wlan-adapter neu zu starten, wenn ich einen abriss der verbindung bemerkt habe. wenn ich aber größere downloads habe, will ich nicht immer am rechner sitzen müssen, um die connection zu überprüfen und ggf. neu zu starten.
wie kann ich das per batch lösen???
besten dank schon einmal im vorraus!!!
ich hab das problem, dass bei meinem wlan die verbindung zum router hin und wieder abreisst. das netzwerksymbol unten rechts im tray ist dann mit einem roten kreuz versehen. der netzwerkadapter macht auch keine anstalten, sich neu zu verbindungen, obwohl die einstellung gesetzt ist.
meine lösung war bisher immer in einem script per
c:\devcon\i386\devcon.exe restart "USB\Vid_0df6&Pid_9071"
den kompletten wlan-adapter neu zu starten, wenn ich einen abriss der verbindung bemerkt habe. wenn ich aber größere downloads habe, will ich nicht immer am rechner sitzen müssen, um die connection zu überprüfen und ggf. neu zu starten.
wie kann ich das per batch lösen???
besten dank schon einmal im vorraus!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150563
Url: https://administrator.de/contentid/150563
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo knoopoxx,
ich würde Dir auch eher zu dem Vorgehen, was Belearas vorgeschlagen hat, raten. Es muss nicht der Router sein, könnte auch der Stick sein. Oder ein Nachbar von Dir hat ein WLAN, dessen Funkkanal weniger als 5 Kanäle Abstand zu Deinem WLAN hat. Das kannst Du z.B. mit WLAN-Info oder NetStumbler herausfinden.
Hier aber trotzdem ein Schnipsel, der den Status des Netzwerkadapters überwacht und ihn ggf. neu startet:
Um den Status des Netzwerkadapters zu überwachen wird die Windows Management Instrumentation Console (WMIC) benutzt. Aus diesem Grund läuft das Skript nicht unter den Home-Versionen von Windows!
Für den Alias NIC werden die Felder PNPDeviceID und NetConnectionStatus abgefragt. Für den Adapter, bei dem die PNPDeviceID mit USB\Vid_0DF6&Pid_9071 anfängt (% ist ein Wildcard in der Abfragesyntax von WMIC und muss bei der Übergabe im Batchfile verdoppelt werden, der Backslash zwischen USB und Vid muss laut WMIC-Syntax auch verdoppelt werden) und NetConnectionStatus den Wert 7 hat (nicht verbunden), wird das Feld PNPDeviceID zurückgeliefert.
Am Kommandoprompt eingegeben sieht das für meine Netzwerkkarte so aus:
Durch "skip=1" hinter FOR /F wird die erste Zeile der Ausgabe (im Beispiel Zeile 2, also "PNPDeviceID") nicht ausgegeben. Die zwei Leerzeilen nach der Device-ID (im Beispiel Zeile 4 u. 5) werden mit ^|FINDSTR /b /v $ herausgefiltert (ist bei Windows XP nicht notwendig, aber bei Windows 7, Windows Vista ungetestet). Der Befehl zeigt nur Zeilen an, in denen am Zeilenanfang (/b) KEIN (/v) Zeilenende ($) vorkommt, also nur Zeilen mit Inhalt.
Die Ausgabe wird aber nicht angezeigt, sondern durch die FOR-/F-Schleife der Laufvariablen %%i zugewiesen (womit Deine Frage nach dem Zuweisen der Ausgabe eines Befehls an eine Variable beantwortet wäre). Damit wird in der Schleife DEVCON RESTART aufgerufen.
Wenn von WMIC kein Netzwerkadapter, auf den die Suchkriterien zutreffen, gefunden wird, wird auf dem Standardfehlerkanal 2 die Meldung "Keine Instanzen verfügbar." ausgegeben. Damit in diesem Fall der DEVCON-Befehl in der Schleife nicht als DEVCON RESTART "@Keine Instanzen verfügbar." ausgeführt wird, wird im Kopf der FOR-Schleife durch 2^>NUL der Standardfehlerkanal ins Nirwana umgeleitet. Die Laufvariable %%i bekommt somit keinen Wert zugewiesen und der Schleifenkörper und damit der DEVCON-Befehl wird garnicht ausgeführt.
Der PING-Befehl in der FOR-Schleife sorgt durch -n 10 dafür, das nach dem Neustart des Netzwerkadapters 10 Sekunden gewartet wird, bevor die Schleife verlassen wird. Teste diesen Wert bei Dir und erhöhe ihn ggf. Durch >NUL wird die Ausgabe von PING nicht angezeigt.
Nach der FOR-Schleife sorgt der GOTO-Befehl dafür, das der ganze Ablauf von vorne beginnt.
Gruß
Friemler
ich würde Dir auch eher zu dem Vorgehen, was Belearas vorgeschlagen hat, raten. Es muss nicht der Router sein, könnte auch der Stick sein. Oder ein Nachbar von Dir hat ein WLAN, dessen Funkkanal weniger als 5 Kanäle Abstand zu Deinem WLAN hat. Das kannst Du z.B. mit WLAN-Info oder NetStumbler herausfinden.
Hier aber trotzdem ein Schnipsel, der den Status des Netzwerkadapters überwacht und ihn ggf. neu startet:
@echo off
:MonitorNIC
for /f "skip=1" %%i in ('wmic nic where "PNPDeviceID like 'USB\\Vid_0DF6&Pid_9071%%' and NetConnectionStatus='7'" get PNPDeviceID 2^>NUL ^| findstr /b /v $') do (
c:\devcon\i386\devcon.exe restart "@%%i"
ping -n 10 127.0.0.1 > NUL
)
goto :MonitorNIC
Um den Status des Netzwerkadapters zu überwachen wird die Windows Management Instrumentation Console (WMIC) benutzt. Aus diesem Grund läuft das Skript nicht unter den Home-Versionen von Windows!
Für den Alias NIC werden die Felder PNPDeviceID und NetConnectionStatus abgefragt. Für den Adapter, bei dem die PNPDeviceID mit USB\Vid_0DF6&Pid_9071 anfängt (% ist ein Wildcard in der Abfragesyntax von WMIC und muss bei der Übergabe im Batchfile verdoppelt werden, der Backslash zwischen USB und Vid muss laut WMIC-Syntax auch verdoppelt werden) und NetConnectionStatus den Wert 7 hat (nicht verbunden), wird das Feld PNPDeviceID zurückgeliefert.
Am Kommandoprompt eingegeben sieht das für meine Netzwerkkarte so aus:
C:\>wmic nic where "PNPDeviceID like 'PCI\\Ven_1106&Dev_3065%' and NetConnectionStatus='7'" get PNPDeviceID
PNPDeviceID
PCI\VEN_1106&DEV_3065&SUBSYS_80ED1043&REV_7C\3&267A616A&0&90
C:\>
Durch "skip=1" hinter FOR /F wird die erste Zeile der Ausgabe (im Beispiel Zeile 2, also "PNPDeviceID") nicht ausgegeben. Die zwei Leerzeilen nach der Device-ID (im Beispiel Zeile 4 u. 5) werden mit ^|FINDSTR /b /v $ herausgefiltert (ist bei Windows XP nicht notwendig, aber bei Windows 7, Windows Vista ungetestet). Der Befehl zeigt nur Zeilen an, in denen am Zeilenanfang (/b) KEIN (/v) Zeilenende ($) vorkommt, also nur Zeilen mit Inhalt.
Die Ausgabe wird aber nicht angezeigt, sondern durch die FOR-/F-Schleife der Laufvariablen %%i zugewiesen (womit Deine Frage nach dem Zuweisen der Ausgabe eines Befehls an eine Variable beantwortet wäre). Damit wird in der Schleife DEVCON RESTART aufgerufen.
Wenn von WMIC kein Netzwerkadapter, auf den die Suchkriterien zutreffen, gefunden wird, wird auf dem Standardfehlerkanal 2 die Meldung "Keine Instanzen verfügbar." ausgegeben. Damit in diesem Fall der DEVCON-Befehl in der Schleife nicht als DEVCON RESTART "@Keine Instanzen verfügbar." ausgeführt wird, wird im Kopf der FOR-Schleife durch 2^>NUL der Standardfehlerkanal ins Nirwana umgeleitet. Die Laufvariable %%i bekommt somit keinen Wert zugewiesen und der Schleifenkörper und damit der DEVCON-Befehl wird garnicht ausgeführt.
Der PING-Befehl in der FOR-Schleife sorgt durch -n 10 dafür, das nach dem Neustart des Netzwerkadapters 10 Sekunden gewartet wird, bevor die Schleife verlassen wird. Teste diesen Wert bei Dir und erhöhe ihn ggf. Durch >NUL wird die Ausgabe von PING nicht angezeigt.
Nach der FOR-Schleife sorgt der GOTO-Befehl dafür, das der ganze Ablauf von vorne beginnt.
Gruß
Friemler