2016-03-30 5 views
2

Derzeit bin ich dies mit:netsh und blockiert den Zugriff auf alle bis auf einen WLAN

netsh wlan add filter permission=block ssid="WLAN1" networktype=infrastructure 

von bestimmten WLAN SSIDs verstecken im Systray zeigt nach oben. Da es in der Regel mehr als eine von ihnen zur Verfügung, habe ich beschlossen, sie alle in einer * .bat Datei zu setzen, wie so

@echo off 
netsh wlan add filter permission=block ssid="WLAN1" networktype=infrastructure 
netsh wlan add filter permission=block ssid="WLAN2" networktype=infrastructure 
netsh wlan add filter permission=block ssid="AnotherWLAN" networktype=infrastructure 
etc 

und sie alle mit einem einzigen Klick zu blockieren.

Dies hält sie jedoch nur versteckt, während die blockierten WLANs diese vordefinierten SSIDs haben. Wenn sie ihre SSID ändern, erscheinen sie wieder und ich muss meine Datei ändern. Dies ist kein Problem, wenn es ein paar von ihnen gibt, aber es gibt normalerweise mehr als 20 auftauchen.

WAS ICH MÖCHTE

tun, ist es eine Möglichkeit für mich netsh zu verwenden und, sagen wir, ein, wenn für oder while-Schleife, alles zu blockieren aber die eine SSID ich wählen? Zum Beispiel in (gebrochen) Pseudocode

SET myWLAN = Home    // e.g. home WLAN SSID = Home 
    if (! SSID == myWLAN) { 
     loop through the available SSID, and block them via netsh 
    } 

Oder würden Sie empfehlen, dass ich mit nur gehen:

netsh wlan add filter permission=denyall networktype=infrastructure 

und dann einem speziellen Whitelist-Filter für mein Heim-WLAN schaffen

netsh wlan delete filter permission=block ssid="myWLAN SSID" networktype=infrastructure 

Ich bin ziemlich neu in all dem, also jede Hilfe wäre mehr als willkommen.

Antwort

1
@ECHO OFF 
SETLOCAL 

SET "allow=WLAN1" 

FOR /f "tokens=3*" %%a IN ('netsh wlan show all^|findstr /i /b /L /c:"SSID "') DO (
IF "%%b" neq "%allow%" ECHO(netsh wlan add filter permission=block ssid="%%b" networktype=infrastructure 
) 

GOTO :EOF 

Dieser Ansatz sucht die netsh wlan show all Ausgabe für Leitungen /b beginnend /i unabhängig von Fall /L wörtlichen /c: diese Konstante Zeichenfolge.

Die tokenising ausgeführt Token 3 und * (der Rest der Zeile) unter Verwendung unter Verwendung von Standard-Trennzeichen HICH Raum umfassen, so dass eine typische gefilterte SSID Linie

wäre
SSID 5 : WLAN2 

Token 1 SSID ist, 2 ist 5 , 3 und 4 ist :WLAN2

Da das erste Token nominierten 3 ist, das Token an %%a und das nächste Token zugeordnet ist, zugewiesen %%b. Dann

wenn das Token jetzt in %%b entspricht nicht der allowed Zeichenfolge, blockieren (na ja, ist der Befehl einfach echo ed für die Fehlersuche -. Verändern die echo(netsh-netsh zu aktivieren

Wenn Sie waren

verwenden
set "allow=%~1" instead of `...WLAN1` then you could run<br> 

thisbatch WLAN4

alle außer WLAN4 zu blockieren .

+0

Genau das hatte ich mir vorgenommen. Danke für deine ausführliche Antwort, es war mehr als hilfreich. – FiddlingAway

Verwandte Themen