如何在批处理中获取当前连接的无线网络名称?

3

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

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

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

我也是批处理的初学者,所以需要帮助。

2个回答

5
要获取网络信息,请使用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

谢谢,第一种选项起作用了,我只需要将“SSID”更改为“Profile”即可返回SSID,因为它显示的是BSSID的一部分而不是SSID。 - William
@William。关于你上面的评论。为了获取SSID而不是BSSID,我发现你也可以将findstr从findstr“SSID”更改为findstr ^ / R“<SSID”。 - danKV

-1

这个答案中提取并修改:

正如你可以在链接的答案中找到的那样,获取你想要的信息的一般命令是wmic nic where "NetConnectionStatus=2" get NetConnectionID。使用| more +1可以传递只显示在wmic命令中的标题。

要将其存储到一个变量中,你需要使用for /f来解析该命令的输出:

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

我使用goto命令在第一次迭代时退出循环,并且只使用它来解析第一行。由于命令的输出包含一些空行,如果没有标签,这将使您得到一个空变量。


2
在我的电脑上无法运行。wmic nic where "NetConnectionStatus=2" get NetConnectionID 输出 NetConnectionID VMware Network Adapter VMnet1 VMware Network Adapter VMnet8 Wi-Fi,并且没有可用的网络名称。 - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接