windows - netsh 并阻止访问除一个 WLAN 以外的所有 WLAN

标签 windows batch-file networking netsh

目前,我正在使用这个:

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

隐藏特定的 WLAN SSID,使其不显示在系统托盘中。由于通常有不止一个可用,我决定将它们全部放在一个 *.bat 文件中,就像这样

@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

只需单击一下即可全部屏蔽。

但是,这只会在被阻止的 WLAN 具有那些预定义的 SSID 时隐藏它们。如果他们改变了他们的 SSID,他们会再次出现,我必须改变我的文件。如果有几个,这不是问题,但通常会超过 20 个。

我想做什么

有没有办法让我使用 netsh 和 if、for 或 while 循环来阻止除了我选择的一个 SSID 以外的所有内容?例如,在(损坏的)伪代码中

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

或者,您会建议我只选择:

netsh wlan add filter permission=denyall networktype=infrastructure

然后为我家的无线局域网创建一个特殊的白名单过滤器

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

我对这一切还很陌生,所以我们非常欢迎任何帮助。

最佳答案

@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

此批处理搜索 netsh wlan show all 输出以 /b 开始 /i 而不管大小写 /L 文字 /c: 这个常量字符串。

使用包含空格的默认定界符使用标记 3*(该行的其余部分)执行标记化,因此过滤的典型 SSID 行将是

SSID 5 : WLAN2

token 1 是 SSID,2 是 5,3 是 :,4 是 WLAN2

由于第一个指定的 token 是 3,因此该 token 分配给 %%a,下一个 token 分配给 %%b .

然后如果 %%b 中的 token 与 allowed 字符串不匹配,则阻止它(好吧,命令只是 echo用于调试 - 将 echo(netsh 更改为 netsh 以激活。

如果你要使用

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

这批 WLAN4

阻止除 WLAN4 之外的所有内容。

关于windows - netsh 并阻止访问除一个 WLAN 以外的所有 WLAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36303540/

相关文章:

windows - 批处理文件无法抑制 "terminate job"

windows - 在后台使用plink转发本地端口并在本地计算机上执行命令

javascript - 使用 CasperJS 作为可移植安装?

windows - "error: can' t 在windows中运行scala时找不到主类scala.tools.nsc.MainGenericRunner

html - 一个网页,可以让用户从中下载某个文件,但不会透露该文件的位置——这有可能吗?

c# - Windows 更新 "file modified"时间戳需要什么?

android - 无法获取平台 cordova-android

java - 通过 LAN 将 DatagramPacket 从一台 PC 发送到另一台 PC

linux - 测量同一 wifi 网络中其他用户的下载速度?

C# 列表与字节数组在网络上的效率