如何批量检索当前连接的无线网络的名称?

时间:2017-08-09 03:42:07

标签: batch-file

我似乎无法在其他任何地方找到此问题,但是,如何检索当前连接的无线网络的名称。如果有必要,我的目标是断开互联网10秒钟,然后重新连接。这是我的代码:

@echo off
ipconfig /release
timeout /t 10 /nobreak
netsh wlan connect %Network%

我只需要帮助获取我当前连接到的无线网络的确切名称,以适应%Network%。我想要任何帮助。

我也是批量的初学者,所以是的。

2 个答案:

答案 0 :(得分:1)

要使用netsh wlan show interface获取网络信息。您可以使用name=进一步过滤界面。在输出中,SSID将位于SSID字段中,也可能位于Profile字段中,可以使用findstr提取。然后可以使用for /f

将数据读入变量
for /f "delims=: tokens=2" %%n in ('netsh wlan show interface name="Wi-Fi" ^| findstr "SSID"') do set "Network=%%n"
set "Network=%Network:~1%"

最后一行是使用variable substring

删除第一个空格字符

当然,假设您只有一个WLAN适配器。如果你有多个,那么事情会更复杂,你有几个选择

  • 像其他答案一样提前离开循环以获得第一个结果
  • 什么都不做才能得到最后的结果
  • 使用循环内的每个适配器执行操作以获取有关它们的所有信息

另一种选择是使用

netsh wlan show networks interface="Wi-Fi" mode=ssid

答案 1 :(得分:0)

取自this answer并修改:

您可以在链接的答案中找到,获取所需信息的常规命令是wmic nic where "NetConnectionStatus=2" get NetConnectionID。使用| more +1,您可以传递仅在wmic-command中显示的标头。

要将此变为变量,您要使用for /f解析该命令的输出:

for /f %%n in ('wmic nic where "NetConnectionStatus=2" get NetConnectionID ^| more +1') do (
  set "Network=%%n"
  goto outer
)
:outer

我使用goto在第一次迭代时退出循环,并仅使用它来解析第一行。由于命令的输出包含一些空行,如果标签不在那里,这将为您留下一个空变量。