如何在批处理文件中提取当前WiFi SSID并赋值给环境变量
提取当前WiFi SSID到环境变量的批处理方案
需求说明
需要在批处理中通过set "var=x"语法,将当前连接的WiFi SSID单独提取并赋值给环境变量,而非保存包含SSID的整行内容。
当前代码及输出
当前执行的脚本:
@echo off set "npcm=%appdata%\npcm.txt" 2>NUL netsh wlan show interfaces | findstr /i "SSID" > "%npcm%" pause
生成的npcm.txt内容:
SSID : MyNetwork BSSID : xx:xx:xx:xx:xx:xx
解决方案
可以直接通过for /f解析netsh的输出,无需生成中间文件,直接提取SSID值并赋值给变量。完整脚本如下:
@echo off setlocal enabledelayedexpansion set "wifi_ssid=" for /f "tokens=2* delims=:" %%a in ('netsh wlan show interfaces ^| findstr /i "SSID"') do ( set "wifi_ssid=%%b" rem 去除SSID值前后的空格 set "wifi_ssid=!wifi_ssid:~1!" ) rem 输出验证变量值 echo 当前WiFi SSID: !wifi_ssid! rem 如果需要保存到全局变量,可在endlocal后传递 endlocal & set "wifi_ssid=%wifi_ssid%" pause
代码解释
for /f "tokens=2* delims=:" %%a:以冒号为分隔符拆分每行内容,tokens=2*表示把冒号后的所有内容(含后续可能的冒号)赋值给%%b,%%a对应冒号前的部分set "wifi_ssid=!wifi_ssid:~1!":去除SSID值开头的空格(原输出中冒号后默认带一个空格)endlocal & set "wifi_ssid=%wifi_ssid%":在局部环境结束后,将变量传递到全局环境中
替代简化方案(无需延迟扩展)
如果SSID中不含空格,可使用更简洁的写法:
@echo off for /f "tokens=2 delims=: " %%a in ('netsh wlan show interfaces ^| findstr /i "SSID"') do set "wifi_ssid=%%a" echo 当前WiFi SSID: %wifi_ssid% pause
这里delims=: 同时以冒号和空格为分隔符,直接提取SSID值。
内容的提问来源于stack exchange,提问作者Christian Cangelli
相关产品推荐
相关产品推荐

