Windows NT批处理脚本用通配符时缺失网络密钥内容问题求助
解决Windows批处理通配符获取WiFi密码失败的问题
嘿,这个问题我之前帮朋友踩过坑!本质是Windows自带的netsh wlan命令不支持直接用通配符*来批量获取WiFi密码——当你用netsh wlan show profile name="*" key=clear时,系统会把*当成一个字面意义上的WiFi名称,而不是通配符去匹配所有网络,自然就拿不到真实的密码了。
要实现批量获取所有已保存网络的密码,得换个思路:先把所有WiFi名称提取出来,再逐个遍历查询密码。
具体实现脚本
下面是我验证过的批处理脚本,适配中文系统(英文系统只需微调一行):
@echo off setlocal enabledelayedexpansion :: 遍历所有已保存的WiFi配置文件 for /f "tokens=2 delims=:" %%i in ('netsh wlan show profiles ^| findstr "所有用户配置文件"') do ( :: 清理名称前后的空格(避免命令执行失败) set "wifiName=%%i" set "wifiName=!wifiName:~1!" echo ------------------------------ echo 当前网络: *!wifiName!* :: 单独查询每个网络的详细信息和明文密码 netsh wlan show profile name="!wifiName!" key=clear echo. ) pause
关键细节说明
- 管理员权限:必须右键以管理员身份运行脚本,否则部分系统加密的WiFi密码无法读取
- 英文系统适配:把脚本里的
findstr "所有用户配置文件"改成findstr "All User Profile"即可 - 延迟变量扩展:启用
enabledelayedexpansion是因为在for循环里需要实时修改和读取变量wifiName,不然会出现变量值不更新的问题
亲测在Win10、Win11上都能正常批量导出所有已保存WiFi的名称和密码,你可以根据自己的需求调整输出格式~
内容的提问来源于stack exchange,提问作者GHC
相关产品推荐
相关产品推荐

