我想创建一个简单的脚本来在Windows10上显示wlan密码。 对于不熟悉cmd命令的用户来说,这将是一个很好的解决方案。
在Windows 7上,可以使用GUI来完成,但不能在较新的OS上完成。
我坚持在线
for /f "tokens=*" %%j in ('netsh wlan show profile %ssid% key=clear ^| findstr "Key Content"') do set wlan_password=%%j
变量wlan_password
始终为null。即使我将set
指令更改为echo
表示语法不正确。我无法解决该问题。
为什么上面的行不起作用,但是行:
for /f "tokens=*" %%i in ('netsh wlan show interfaces ^| findstr "Profile"') do set wlan_output=%%i
运作良好?
@echo off
set wlan_output=
set connected_ssid=
set ssid=
set wlan_password=
for /f "tokens=*" %%i in ('netsh wlan show interfaces ^| findstr "Profile"') do set wlan_output=%%i
for /f "tokens=2 delims=:" %%a in ("%wlan_output%") do set connected_ssid=%%a
call :TRIM %connected_ssid% connected_ssid
set ssid=%1
if "%ssid%"=="" set /p "ssid=Podaj nazwe sieci [%connected_ssid%]: " || set "ssid=%connected_ssid%"
if not "%ssid%"=="" (
for /f "tokens=*" %%j in ('netsh wlan show profile %ssid% key=clear ^| findstr "Key Content"') do set wlan_password=%%j
echo "Haslo do sieci %ssid%: %wlan_password%"
exit /b
)
else (
echo "Nie podano nazwy sieci. Nie mozna odczytac hasla"
exit /b
)
pause
exit /b
:TRIM
SET %2=%1
GOTO :EOF
答案 0 :(得分:0)
嗯-很抱歉未能尽快发现实际问题:您还必须在=
命令中转义for
:
for /f "tokens=*" %%j in ('netsh wlan show profile %ssid% key^=clear ^| findstr /c:"Key Content"') do set wlan_password=%%j
set wlan_password
注意:使用findstr /c:"Key Content"
或find "Key Content"
,因为findstr "Key Content"
返回包含Key
或Content
(或两者)的每一行。 (并不是在这种特殊情况下会有所不同,但是如果没有/c:
,它迟早会咬你)
仅获取密钥:
for /f "tokens=1,* delims=:" %%j in ('netsh wlan show profile %ssid% key^=clear ^| find "Key Content"') do set "wlan_password=%%k"
set "wlan_password=%wlan_password:~1%"
echo ---%wlan_password%---