我需要按如下所示将SSID名称传递给我的简单脚本
netsh wlan set profileparameter name="SSID" cost=variable
所以我知道我可以从执行中获取SSID
Netsh WLAN show profiles
并查看“ 当前用户个人资料”行,找到所需的值。 但是如果没有grep和sed,如何使用命令输出中的值?
P.S。这个想法是使用本机Windows工具,而不是CigWin或UNIX服务,即,如果可能的话,不安装任何其他软件。
答案 0 :(得分:0)
使用for /f
循环获取命令的输出。您可以使用适当的标记和delims提取所需行的一部分,但是使用引号作为delimter的语法有点奇怪:
for /f tokens^=2delims^=^" %%a in ('Netsh WLAN show profile "profilename"^|find "SSID-Name"') do set "SSIDa=%%a"
echo a: %SSIDa%
另一种可能性是使用冒号作为分隔符。但是然后您必须删除多余的空格和引号:
for /f "tokens=2 delims=:" %%a in ('Netsh WLAN show profile "profilename"^|find "SSID-Name"') do set "SSIDb=%%~a"
echo b: %SSIDb:~2,-1%
您还可以使用第二个for
获取该行的最后一个标记(恰好是您想要的名称):
for /f "delims=" %%a in ('Netsh WLAN show profile "profilename"^|find "SSID-Name"') do for %%b in (%%a) do set "SSIDc=%%~b"
echo c: %SSIDc%
第四种可能是使用tokens=3
(带有标准定界符),但这是一个糟糕的选择(不安全),因为输出(令牌数量)可能会随本地化而改变(另一方面,搜索字符串也是如此) SSID-Name
是本地化的。)