Kuddel071089 9 Geschrieben 8. Januar 2016 Melden Geschrieben 8. Januar 2016 Hallo zusammen,wenn ich mit meinem Notebook per W-LAN verbunden bin und dann ein LAN Kabel einstecke, läuft der Traffic trotzdem weiter über WLAN, obwohl ich die LAN-Verbindung als erste Verbindung eingerichtet habe.Jetzt wollte ich ein kurzes Script schreiben, welches dauerhaft im Hintergrund läuft und prüft welches Interface verbunden ist.Sprich: LAN verbunden -> WLAN ausschalten / LAN nicht verbunden -> WLAN anschalten.Iwo ist aber noch ein Fehler, auf jeden Fall merkt das Script nicht, dass ich das LAN Kabek entferne und die IP 192.168.4.6 nicht mehr erreichbar ist. @echo off title LAN_WLAN_Umschaltung :check cls ::LAN Interface ping -n 1 192.168.4.6 | find /i /c "TTL" >nul if %ERRORLEVEL% == 0 ECHO LAN-Verbindung ist aktiv if %ERRORLEVEL% == 0 goto wlan_aus ::WLAN Interface ping -n 1 192.168.4.7 | find /i /c "TTL" >nul if %ERRORLEVEL% == 0 ECHO WLAN-Verbindung ist aktiv if %ERRORLEVEL% == 0 goto check goto wlan_an :wlan_aus ECHO WLAN aus ping -n 1 192.168.4.7 | find /i /c "TTL" >nul if %ERRORLEVEL% == 0 netsh interface set interface W-LAN disabled goto check :wlan_an ECHO WLAN an netsh interface set interface W-LAN enabled goto check
lefg 276 Geschrieben 8. Januar 2016 Melden Geschrieben 8. Januar 2016 (bearbeitet) Jetzt wollte ich ein kurzes Script schreiben, welches dauerhaft im Hintergrund läuft und prüft welches Interface verbunden ist. Moin, ob eine Batch mit solch einer Schleife wirklich etwas Gutes ist? Wie stellt sich denn ein einmaliger Lauf in einer Eingabeaufforderung dar? bearbeitet 8. Januar 2016 von lefg
Kuddel071089 9 Geschrieben 9. Januar 2016 Autor Melden Geschrieben 9. Januar 2016 Moin, ob eine Batch mit solch einer Schleife wirklich etwas Gutes ist? Wie stellt sich denn ein einmaliger Lauf in einer Eingabeaufforderung dar? Also wenn ich das Script teste und die Batch ausführe mit eingestecktem LAN Kabel und aktiviertem W-LAN habe ich folgendes Ergebnis: LAN-Verbindung ist aktiv WLAN aus in dieser Schleife bleibt das Skript hängen auch wenn ich das LAN Kabel entferne
lefg 276 Geschrieben 9. Januar 2016 Melden Geschrieben 9. Januar 2016 Kommentier doch mal das @echo off aus mit einem Rem davor!
daabm 1.431 Geschrieben 9. Januar 2016 Melden Geschrieben 9. Januar 2016 Das Skript hat einen Fehler ping -n 1 192.168.4.6 | find /i /c "TTL" >nul if %ERRORLEVEL% == 0 ECHO LAN-Verbindung ist aktiv if %ERRORLEVEL% == 0 goto wlan_aus Der zweite IF %ERRORLEVEL% wird immer 0 sein, da er aus dem vorhergehenden "ECHO LAN-Verbindung aktiv" resultiert. Beim WLAN genau das gleiche. So geht das also nicht Und wenn Du && und || verwendest, geht das sogar als Einzeiler: for /l %%i in (1,0,2) do ping -n 1 192.168.4.6 2>nul | find /i /c "TTL" >nul 2>&1 && netsh interface set interface W-LAN disabled || netsh interface set interface W-LAN enabled Wie das genau funktioniert? for /l ist eine Zählschleife, der aktuelle Wert steht in %%i (auf der Befehlszeile mußt Du %i verwenden, in Batchdateien %%i). Die brauchen wir aber nur, um eine Endlosschleife zu erzeugen: (start,schritt,ende) - und mit schritt=0 wird nicht hochgezählt, %%i ist also immer 1. && bedeutet "führe den folgenden Befehl aus, wenn der vorherige Befehl Errorlevel 0 lieferte". || bedeutet das Gegenteil - Errorlevel <> 0.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden