Kuddel071089 9 Geschrieben 8. Januar 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 8. Januar 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 9. Januar 2016 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 9. Januar 2016 Melden Teilen Geschrieben 9. Januar 2016 Kommentier doch mal das @echo off aus mit einem Rem davor! Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 9. Januar 2016 Melden Teilen 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.