netsh показывает профили WLAN без других вещей - PullRequest
0 голосов
/ 04 декабря 2018

Итак, я хотел сделать что-то для практики, и потому что это инструмент, который мне нужен в моей повседневной жизни, и он не должен быть слишком сложным.Таким образом, из-за поиска в Google мне удалось распечатать свой ipadress, не показывая все другие вещи ipconfig, предъявив иск:

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
set ip=%ip:~1%
echo Your Ipv4 Adress is: %ip%
cmd /k

Теперь я хочу что-то подобное с netsh wlan show profile

, где он показывает толькопрофили и ничего больше, поэтому я попробовал то же самое, поэтому я написал это

for /f "tokens=1-2 delims=:" %%a in ('netsh wlan show profiles^|find "User profiles"') do set wifi=%%b
set wifi=%wifi:~1%
echo %wifi%
cmd /k

Но он просто закрывает открывает cmd, как будто я открыл его вручную, не написав что-то.

, если кто-то может объяснитьменя, где я делаю ошибку, так как первый работает, второй не оценил бы это

1 Ответ

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

Поскольку ваш код может быть смещен на основе других адаптеров в вашей сети, я покажу вам лучший способ получить IPv4.Это может быть очень сложно сделать, так как вам нужно разобраться с каждым адаптером. В вашем примере он только захватит последний один в списке ipconfig.

Чтобы это исправить, вы можетесначала найдите адаптер, затем найдите следующий ipv4, связанный с этим адаптером.Во многих случаях нужный вам ipv4 будет называться Wireless LAN adapter Wi-Fi.Обязательно замените это на свой уважаемый сетевой адаптер.В пакетном сценарии %adress% будет строкой IPv4.

Найти пакет IPv4 Script:

@echo off
setlocal enabledelayedexpansion

set "adapter=Wireless LAN adapter Wi-Fi"
set adapterfound=false
for /f "tokens=1-2 delims=:" %%f in ('ipconfig') do (
    set "item=%%f"
    if /i "!item!"=="!adapter!" (
        set adapterfound=true
    ) else if not "!item!"=="!item:IPv4 Address=!" if "!adapterfound!"=="true" (
        set "adress=%%g"
        set adress=!adress:* =%!
        set adapterfound=false
    )
)

echo Your IPv4 Address: %adress%

pause
goto :EOF

Для поиска только имен профилей с помощью netsh wlan show profiles, правильный способ будет использовать for loop с tokens & skip.

Поскольку строки начала всегда одинаковы для netsh wlan show profiles, мы можем просто пропустить первые 4 строкизатем используйте токены, чтобы получить только все после 4-го пробела (в нашем случае это имя сетевого профиля).Ниже, переменная %%b будет вашим именем Wi-Fi.

Получить только имена профилей BATCH:

@echo off

Rem | Grab all profile names
for /f "tokens=4,* skip=4" %%a in ('netsh wlan show profile') do (
    echo [WIFI-NAME: %%b]
)

pause
goto :EOF

Используя этот метод, мы можем еще дальшеэто также позволяет получить каждый пароль с именем профиля с помощью netsh wlan show profile "NAME" key^=clear и извлечь пароль Key Content или ->.Используя серию for loops, это можно сделать чисто и организованно.Ниже приведено объяснение REM.

Список профилей + BATCH пароля:

@echo off

Rem | Grab all profiles
for /f "tokens=4,* skip=4" %%a in ('netsh wlan show profile') do (

    Rem | Grab key for each profile
    for /f "tokens=*" %%c in ('netsh wlan show profile "%%b" key^=clear') do (

        Rem | Grab only key
        for /f "tokens=3,*" %%d in ('echo %%c^| find /i "Key Content"') do (

            Rem | Display & Record key
            echo [WIFI-NAME: %%b] [CURRENT-PASSWORD: %%e]

        )
    )
)

pause
goto :EOF

Для получения справки по любой из команд выполните следующее:

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