Команда, запущенная в cmd, выдает другой вывод, чем при ее анализе в цикле for - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь получить доступ к своему ключу безопасности сети, используя цикл for /f.Команда, которую я использую для ее получения (в cmd), выглядит следующим образом:

netsh wlan show profiles name="NETWORK NAME" key=clear

Не думаю, что это важно, но имя сети включает два слова, разделенных пробелом.

Я сделал несколько попыток:

1. Попробуйте разобрать его простым способом:

for /f "tokens=4" %%A IN ('netsh wlan show profiles name="NETWORK NAME" key=clear ^| findstr /c:"Key content"') do echo %%A

У этого не было вывода, поэтому я попытался:

for /f "tokens=4" %%A IN ('netsh wlan show profiles name="NETWORK NAME" key=clear') do echo %%A

который показал мне:

parameters
[[name=]<string>]
of
of
display
data
interface
is
profile
is
listed.
will
set
be
are
preference
1"
2"
3"

который с delims= опциями:

One or more parameters for the command are not correct or missing.
Usage: show profiles [[name=]<string>] [interface=<string>] [key=<string>]
Parameters:
    Tag             Value
    name          - Name of the profile to display.
    interface     - Name of the interface which has this profile configured.
    key           - To display the key in plain text, set key=clear.
Remarks:
    Shows the profile data or lists the profiles on the system.
    Parameter name and interface are both optional.
    If profile name is given then the content of the profile will be
    displayed. Otherwise only profile name and description will be listed.
    If interface name is given, only the specified profile on the given
    interface will be listed. Otherwise, all profiles with the given name
    on the system will be listed.
    If key is set to "clear" and the caller is local administrator,
    the key will be shown in plain text.
    Group Policy Profiles are read only. User Profiles are readable and
    writeable, and the preference order can be changed.
Examples:
    show profiles name="profile 1" interface="Wireless Network Connection"
    show profiles name="profile 2"
    show profiles name="profile 3" key=clear
    show profiles

2. Использование usebackq:

for /f "usebackq delims=" %%A IN (`netsh wlan show profiles name="NETWORK NAME" key=clear`) do echo %%A

Тот же вывод, что и выше ...

3. Установить сетевое имя как переменную в кавычках:

set network="NETWORK NAME"
for /f "delims=" %%A IN ('netsh wlan show profiles name=%network% key=clear') do echo %%A

То жевыводите, как указано выше, даже используя usebackq.

4. Установите имя сети в качестве переменной без кавычек:

set network=NETWORK NAME
for /f "delims=" %%A IN ('netsh wlan show profiles name="%network%" key=clear') do echo %%A

Тот же вывод, что и выше, даже с usebackq.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 23 декабря 2018

вы должны избежать некоторых специальных символов.= является одним из них:

for /f "delims=" %%A IN ('netsh wlan show profiles name^="NETWORK NAME" key^=clear') do echo %%A

Другие символы, которые должны быть экранированы: <>|&,)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...