Получение SSID в Windows 10 CMD скрипте - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужно передать имя SSID моему простому сценарию с основной строкой следующим образом

netsh wlan set profileparameter name="SSID" cost=variable

Итак, я знаю, что могу получить SSID при выполнении

Netsh WLAN show profiles

и, глядя на строку " Текущий профиль пользователя ", найдите нужное значение. Но без grep и sed, как я могу использовать значение из вывода команды?

P.S. Идея состоит в том, чтобы использовать собственные инструменты Windows, а не службы CigWin или UNIX, то есть не устанавливать дополнительное программное обеспечение, если это возможно.

1 Ответ

0 голосов
/ 08 ноября 2018

Используйте цикл for /f, чтобы получить выходные данные команды. Вы можете использовать правильные токены и разделители для извлечения части строки, которую вы хотите, но синтаксис немного странный, чтобы использовать кавычки в качестве разделителя:

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 зависит от локализации).

...