Jump to content

LAN-WLAN umschaltung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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  
Link zu diesem Kommentar

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

Link zu diesem Kommentar

Das Skript hat einen Fehler smile.gif

 

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 smile.gif

 

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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...