Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка состояния Wi-Fi и уровня его сигнала

Ответить
Настройки темы
CMD/BAT - [решено] Проверка состояния Wi-Fi и уровня его сигнала

Аватара для wareznik3dll

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: wareznik3dll
Дата: 24-11-2020
Вложения
Тип файла: rar WLAN Info En-Ru-Ua 1.0.rar
(207.9 Kb, 16 просмотров)
Есть код для проверки состояния Wi-Fi и уровня его сигнала:

Скрытый текст
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions & REM Использование дополнительных ключей.
Chcp 1251 >Nul
Title Проверка состояния Wi-Fi и уровня его сигнала.
Mode Con: Cols=78 Lines=9
Set Count=1
:Check
For %%n In ("Имя" "Состояние:" " SSID" "Сигнал") Do (
	For /f "Tokens=1,* Delims=: " %%a In ('Netsh Wlan Show Interfaces ^| Find /i %%n') Do (
		If %%n=="Имя" (
			Set "Name=%%b"
			)
		If %%n=="Состояние:" (
			Set "State=%%b"
			)
		If %%n==" SSID" (
			Set "SSID=%%b"
			)
		If %%n=="Сигнал" (
			Set "Signal=%%b"
			)
		)
	)
Echo Проверок  : %Count%
Echo.
Echo Имя       : %Name%
Echo SSID      : %SSID%
Echo Состояние : %State%
Echo Сигнал    : %Signal%
Echo.
Echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
Set /a Count+=1
  Pause >Nul
Goto Check


Вопрос: Как получить более чувствительные данные, а то замечаю инфа очень медленно обновляется и вовсе не точно по сравнении с программой "Wi-Fi Scanner"?

Скорость не важна
Важно: только четыре строчки "Имя, SSID, Состояние, Сигнал, Наглядный (не разбросанный) обзор выводимой инфы ну и наипростейший код".
Менее важно: "Количество проверок, Дата и Время конечной проверки и Только нужный размер окна консоли".
Наименее важно: "Заголовок окна консоли".
Ну и если получится (очень важно) рабочий код написанный с использованием кодовой таблицы 65001 (UTF-8) то-есть код должен быть сохранен именно в этой кодировке.

Благодаря всем неравнодушным резальтат был добит таким кодом:

Русская версия (исправленная 24.11.2020)
Код: Выделить весь код
@Echo Off
REM WLAN (Wireless Local Area Network) — беспроводная локальная сеть.
REM Wi-Fi (Wireless Fidelity) — это название торгового бренда, которое используется для обозначения устройств, подключаемых к беспроводной сети.
REM Чаще всего термин WiFi рассматривается как синоним WLAN.
Chcp 65001 >Nul
	REM Получение нужного размера окна
Mode Con: Cols=80 LInes=43
Title Вывод информации о подключенной WLAN (русская версия).
	REM Указание размещения файла с базой данных
Set "DataBase=DataBase.txt"
REM Set "DataBase=DataBaseRus.txt"
Set Count=1

:Check
SetLocal EnableExtensions
	REM Строки для физического и виртуального (с подменой Netsh Wlan Show Interfaces на когда-то полученные) тестирований
REM For /f "Eol=; Tokens=1-3*" %%a In (WiFi2.txt) Do Set "A1=%%a"& Set "B2=%%b"& Set "C3=%%c"& Set "D4=%%d"& Call :M1
For /f "Tokens=1-3*" %%a In ('Netsh Wlan Show Interfaces') Do Set "A1=%%a"& Set "B2=%%b"& Set "C3=%%c"& Set "D4=%%d"& Call :M1
	REM Перевод строк которые можно перевести
If "%Interface%"=="There is no wireless interface on the system." Set "Interface=Беспроводной интерфейс в системе отсутствует."
If "%Interface%"=="The Wireless AutoConfig Service (wlansvc) is not running." Set "Interface=Служба автонастройки беспроводной сети (wlansvc) не запущена."
If "%Interface%"=="There is 1 interface on the system:" Set "Interface=В системе 1 интерфейс:"
If "%Interface:~-26%"==" interfaces on the system:" If "%Interface:~0,10%"=="There are " Set "N=%Interface:~10%"& Call :M3
If "%Interface%"=="There are %N% interfaces on the system:" Set "Interface=В системе %N% интерфейс%Ending%:"
If "%State%"=="connected" Set "State=Подключено"
If "%State%"=="disconnected" Set "State=Отключено"
If "%State%"=="ad hoc network formed" Set "State=Создана сеть компьютер-компьютер"
If "%RadioStatus%"=="Hardware On" Set "RadioStatus=Оборудование вкл."
If "%RadioStatus2%"=="Software On" Set "RadioStatus2=Программное обеспечение вкл."
If "%NetworkType%"=="Infrastructure" Set "NetworkType=Инфраструктура"
If "%NetworkType%"=="Adhoc" Set "NetworkType=Прямое соединение"
If "%ConnectionMode%"=="Auto Connect" Set "ConnectionMode=Автоматическое подключение"
If "%ConnectionMode%"=="Profile" Set "ConnectionMode=Профиль"
If "%HostedNetworkStatus%"=="Not available" Set "HostedNetworkStatus=Недоступно"
If "%HostedNetworkStatus%"=="Not started" Set "HostedNetworkStatus=Не запущено"
If "%HostedNetworkStatus%"=="Started" Set "HostedNetworkStatus=Запущено"
	REM Вывод возможной информации в окне консоли
Echo.
Echo Проверка                   : %Count%
Echo Дата                       : %Date%
Echo Время                      : %Time%
Echo.
Echo %Interface%
Echo.
Echo Имя                        : %Name%
Echo Описание                   : %Description%
Echo Идентификатор GUID         : %GUID%
Echo Физический адрес           : %PhysicalAddress%
Echo Состояние                  : %State%
Echo Cостояние радио            : %RadioStatus%
Echo.                             %RadioStatus2%
Echo SSID                       : %SSID%
Echo BSSID                      : %BSSID%
Echo Тип сети                   : %NetworkType%
Echo Тип радио                  : %RadioType%
Echo Проверка подлинности       : %Authentication%
Echo Шифр                       : %Cipher%
Echo Режим подключения          : %ConnectionMode%
Echo Канал                      : %Channel%
Echo Скорость приема (Мбит/с)   : %ReceiveRate%
Echo Скорость передачи (Мбит/с) : %TransmitRate%
Echo Сигнал                     : %Signal%
Echo Профиль                    : %Profile%
Echo.
Echo Состояние размещенной сети : %HostedNetworkStatus%
If Exist %DataBase% (
REM Вывод с использованием базы данных:
Echo Клиенты в размещенной сети : %Client1%
Echo.                             %Client2%
Echo.                             %Client3%
Echo.                             %Client4%
Echo.                             %Client5%
Echo.                             %Client6%
Echo.                             %Client7%
Echo.                             %Client8%
Echo.                             %Client9%
Echo.                             %Client10%
) Else (
REM Или стандартный вывод ^(если не нужно использование базы данных^):
Echo Клиенты в размещенной сети : %HostedNetworkClient1%
Echo.                             %HostedNetworkClient2%
Echo.                             %HostedNetworkClient3%
Echo.                             %HostedNetworkClient4%
Echo.                             %HostedNetworkClient5%
Echo.                             %HostedNetworkClient6%
Echo.                             %HostedNetworkClient7%
Echo.                             %HostedNetworkClient8%
Echo.                             %HostedNetworkClient9%
Echo.                             %HostedNetworkClient10%)
Echo.
Echo.%ClientsLimitReached%
Echo.
Echo Нажмите любую клавишу, чтобы обновить информацию о подключенной WLAN.
Pause >Nul
Set /a Count+=1
	REM Обнуление всех выше указанных переменных до метки [:Check]
EndLocal & Set Count=%Count%
Goto Check

:M1
	REM Блокировка приёма данных от второго и более интерфейсов (следующие две строки)
%E%
If %A1%==Name If DefIned Name Set "E=Exit /b"& Exit /b
	REM Создание переменных [%Interface%]
If Not DefIned Interface (If "%D4:~-1%"==" " (
		Set "Interface=%A1% %B2% %C3% %D4:~0,-1%"& Exit /b
		) Else Set "Interface=%A1% %B2% %C3% %D4%"& Exit /b)
	REM Создание переменных [%с одним словом или символом, кроме двоеточия%]
If "%B2%"==":" If Not DefIned %A1% (
	If "%D4%"=="" Set "%A1%=%C3%"& Exit /b
	If Not "%D4%"=="" Set "%A1%=%C3% %D4%"& Exit /b)
	REM Создание переменных [%с двумя словами или символами, кроме двоеточия%]
If Not DefIned %A1%%B2% (
	If "%C3%"==":" Set "%A1%%B2%=%D4%"& Exit /b
	REM Создание переменных [%ReceiveRate%] и [%TransmitRate%]
	If "%B2%"=="rate" Set "%A1%%B2%=%D4:~2%"& Exit /b)
	REM Создание переменной [%RadioStatus2%]
If DefIned RadioStatus If Not DefIned RadioStatus2 Set "RadioStatus2=%A1% %B2%"& Exit /b
	REM Создание переменных [%с тремя словами или символами, кроме двоеточия%]
If Not DefIned %A1%%B2%%C3% Set "%A1%%B2%%C3%=%D4:~2%"
	REM Продолжение работы для создания переменных [%HostedNetworkClients(1-10)%], [%Client(1-10)%] и [%ClientsLimitReached%]
If Not DefIned HostedNetworkClients Exit /b
	REM Выдача чисел от 9 до 1 для создания переменных [%HostedNetworkClients(1-10)%], [%Client(1-10)%] и [%ClientsLimitReached%]
For /l %%a In (10,-1,1) Do Call :M2 %%a& If DefIned HostedNetworkClient%%a Exit /b

:M2
Set /a min=%1-1
	REM Создание переменных [%HostedNetworkClients10%], [%Client10%] и [%ClientsLimitReached%]
If %min% EQU 9 If DefIned HostedNetworkClient%min% If Not DefIned HostedNetworkClient%1 (
	set "ClientsLimitReached=Достигнут предел отображения клиентов в размещенной сети ^(не более 10^)"
	Set HostedNetworkClient%1=%A1%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %A1%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клиент [%A1%] не найден в базе данных"
	Exit /b)
	REM Создание переменных [%HostedNetworkClients(2-9)%] и [%Client(2-9)%]
If %min% LSS 9 If %min% GTR 0 If DefIned HostedNetworkClient%min% If Not DefIned HostedNetworkClient%1 (
	Set HostedNetworkClient%1=%A1%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %A1%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клиент [%A1%] не найден в базе данных"
	Exit /b)
	REM Создание переменных [%HostedNetworkClients1%] и [%Client1%]
If %min% EQU 0 If DefIned HostedNetworkClients If Not DefIned HostedNetworkClient%1 (
	Set HostedNetworkClient%1=%HostedNetworkClients%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %HostedNetworkClients%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клиент [%HostedNetworkClients%] не найден в базе данных"
	Exit /b
	)
Exit /b

:M3
	REM Добавление правильного окончания к слову [интерфейс] в зависимости от количества
If "%Interface:~-26%"==" interfaces on the system:" If "%Interface:~0,10%"=="There are " Set "N=%N:~0,-26%"
If %N% LEQ 9 (
	If %N% EQU 0 Set Ending=ов& Exit /b
	If %N% EQU 1 Set Ending=& Exit /b
	If %N% GEQ 2 If %N% LEQ 4 Set Ending=а& Exit /b
	If %N% GEQ 5 If %N% LEQ 9 Set Ending=ов& Exit /b)
If %N% GTR 9 (
	If %N:~-2,1% EQU 1 Set Ending=ов& Exit /b
	If %N:~-2,1% GEQ 2 (
		If %N:~-1% EQU 0 Set Ending=ов& Exit /b
		If %N:~-1% EQU 1 Set Ending=& Exit /b
		If %N:~-1% GEQ 2 If %N:~-1% LEQ 4 Set Ending=а& Exit /b
		If %N:~-1% GEQ 5 If %N:~-1% LEQ 9 Set Ending=ов& Exit /b)
	If %N:~-2,1% EQU 0 (
		If %N:~-1% EQU 0 Set Ending=ов& Exit /b
		If %N:~-1% EQU 1 Set Ending=& Exit /b
		If %N:~-1% GEQ 2 If %N:~-1% LEQ 4 Set Ending=а& Exit /b
		If %N:~-1% GEQ 5 If %N:~-1% LEQ 9 Set Ending=ов& Exit /b)
	)

Українська версія (випрвлена 24.11.2020)
Код: Выделить весь код
@Echo Off
REM WLAN (Wireless Local Area Network) — бездротова локальна мережа.
REM Wi-Fi (Wireless Fidelity) — це назва торгового бренду, яка використовується для позначення пристроїв, що підключаються до бездротової мережі.
REM Найчастіше термін WiFi розглядається як синонім WLAN.
Chcp 65001 >Nul
Mode Con: Cols=83 LInes=43
Title Виведення інформації про підключену WLAN (українська версія).
Set "DataBase=DataBase.txt"
REM Set "DataBase=DataBaseUkr.txt"
Set Count=1

:Check
SetLocal EnableExtensions

For /f "Tokens=1-3*" %%a In ('Netsh Wlan Show Interfaces') Do Set "A1=%%a"& Set "B2=%%b"& Set "C3=%%c"& Set "D4=%%d"& Call :M1

If "%Interface%"=="There is no wireless interface on the system." Set "Interface=Бездротовий інтерфейс в системі відсутній."
If "%Interface%"=="The Wireless AutoConfig Service (wlansvc) is not running." Set "Interface=Служба автоналаштування бездротової мережі (wlansvc) не запущена."
If "%Interface%"=="There is 1 interface on the system:" Set "Interface=В системі 1 інтерфейс:"
If "%Interface:~-26%"==" interfaces on the system:" If "%Interface:~0,10%"=="There are " Set "N=%Interface:~10%"& Call :M3
If "%Interface%"=="There are %N% interfaces on the system:" Set "Interface=В системі %N% інтерфейс%Ending%:"
If "%State%"=="connected" Set "State=Підключено"
If "%State%"=="disconnected" Set "State=Відключено"
If "%State%"=="ad hoc network formed" Set "State=Створена мережа комп'ютер-комп'ютер"
If "%RadioStatus%"=="Hardware On" Set "RadioStatus=Обладнання вкл."
If "%RadioStatus2%"=="Software On" Set "RadioStatus2=Програмне забезпечення вкл."
If "%NetworkType%"=="Infrastructure" Set "NetworkType=Інфраструктура"
If "%NetworkType%"=="Adhoc" Set "NetworkType=Пряме з'єднання"
If "%ConnectionMode%"=="Auto Connect" Set "ConnectionMode=Автоматичне підключення"
If "%ConnectionMode%"=="Profile" Set "ConnectionMode=Профіль"
If "%HostedNetworkStatus%"=="Not available" Set "HostedNetworkStatus=Недоступно"
If "%HostedNetworkStatus%"=="Not started" Set "HostedNetworkStatus=Не запущено"
If "%HostedNetworkStatus%"=="Started" Set "HostedNetworkStatus=Запущено"

Echo.
Echo Перевірка                   : %Count%
Echo Дата                        : %Date%
Echo Час                         : %Time%
Echo.
Echo %Interface%
Echo.
Echo Ім'я                        : %Name%
Echo Опис                        : %Description%
Echo Ідентифікатор GUID          : %GUID%
Echo Фізична адреса              : %PhysicalAddress%
Echo Стан                        : %State%
Echo Стан радіо                  : %RadioStatus%
Echo.                              %RadioStatus2%
Echo SSID                        : %SSID%
Echo BSSID                       : %BSSID%
Echo Тип мережі                  : %NetworkType%
Echo Тип радіо                   : %RadioType%
Echo Перевірка автентичності     : %Authentication%
Echo Шифр                        : %Cipher%
Echo Режим підключення           : %ConnectionMode%
Echo Канал                       : %Channel%
Echo Швидкість прийому (Мбіт/с)  : %ReceiveRate%
Echo Швидкість передачі (Мбіт/с) : %TransmitRate%
Echo Сигнал                      : %Signal%
Echo Профіль                     : %Profile%
Echo.
Echo Стан розміщеної мережі      : %HostedNetworkStatus%
If Exist %DataBase% (
REM Виведення з використанням бази даних:
Echo Клієнти в розміщеній мережі : %Client1%
Echo.                              %Client2%
Echo.                              %Client3%
Echo.                              %Client4%
Echo.                              %Client5%
Echo.                              %Client6%
Echo.                              %Client7%
Echo.                              %Client8%
Echo.                              %Client9%
Echo.                              %Client10%
) Else (
REM Або стандартне виведення ^(якщо не потрібно використання бази даних^):
Echo Клієнти в розміщеній мережі : %HostedNetworkClient1%
Echo.                              %HostedNetworkClient2%
Echo.                              %HostedNetworkClient3%
Echo.                              %HostedNetworkClient4%
Echo.                              %HostedNetworkClient5%
Echo.                              %HostedNetworkClient6%
Echo.                              %HostedNetworkClient7%
Echo.                              %HostedNetworkClient8%
Echo.                              %HostedNetworkClient9%
Echo.                              %HostedNetworkClient10%)
Echo.
Echo.%ClientsLimitReached%
Echo.
Echo Натисніть будь-яку клавішу, щоб оновити інформацію про підключену WLAN.
Pause >Nul
Set /a Count+=1
EndLocal & Set Count=%Count%
Goto Check

:M1
%E%
If %A1%==Name If DefIned Name Set "E=Exit /b"& Exit /b
If Not DefIned Interface (If "%D4:~-1%"==" " (
		Set "Interface=%A1% %B2% %C3% %D4:~0,-1%"& Exit /b
		) Else Set "Interface=%A1% %B2% %C3% %D4%"& Exit /b)
If "%B2%"==":" If Not DefIned %A1% (
	If "%D4%"=="" Set "%A1%=%C3%"& Exit /b
	If Not "%D4%"=="" Set "%A1%=%C3% %D4%"& Exit /b)
If Not DefIned %A1%%B2% (
	If "%C3%"==":" Set "%A1%%B2%=%D4%"& Exit /b
	If "%B2%"=="rate" Set "%A1%%B2%=%D4:~2%"& Exit /b)
If DefIned RadioStatus If Not DefIned RadioStatus2 Set "RadioStatus2=%A1% %B2%"& Exit /b
If Not DefIned %A1%%B2%%C3% Set "%A1%%B2%%C3%=%D4:~2%"
If Not DefIned HostedNetworkClients Exit /b
For /l %%a In (10,-1,1) Do Call :M2 %%a& If DefIned HostedNetworkClient%%a Exit /b

:M2
Set /a min=%1-1
If %min% EQU 9 If DefIned HostedNetworkClient%min% If Not DefIned HostedNetworkClient%1 (
	set "ClientsLimitReached=Досягнута межа відображення клієнтів у розміщеній мережі ^(не більше 10^)"
	Set HostedNetworkClient%1=%A1%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %A1%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клієнт [%A1%] не знайдений в базі даних"
	Exit /b)
If %min% LSS 9 If %min% GTR 0 If DefIned HostedNetworkClient%min% If Not DefIned HostedNetworkClient%1 (
	Set HostedNetworkClient%1=%A1%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %A1%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клієнт [%A1%] не знайдений в базі даних"
	Exit /b)
If %min% EQU 0 If DefIned HostedNetworkClients If Not DefIned HostedNetworkClient%1 (
	Set HostedNetworkClient%1=%HostedNetworkClients%
	For /f "Eol=; Tokens=1* Delims==" %%a In (%DataBase%) Do If %HostedNetworkClients%==%%a (
		Set "Client%1=%%b"& Exit /b) Else Set "Client%1=Клієнт [%HostedNetworkClients%] не знайдений в базі даних"
	Exit /b
	)
Exit /b

:M3
If "%Interface:~-26%"==" interfaces on the system:" If "%Interface:~0,10%"=="There are " Set "N=%N:~0,-26%"
If %N% LEQ 9 (
	If %N% EQU 0 Set Ending=ів& Exit /b
	If %N% EQU 1 Set Ending=& Exit /b
	If %N% GEQ 2 If %N% LEQ 4 Set Ending=и& Exit /b
	If %N% GEQ 5 If %N% LEQ 9 Set Ending=ів& Exit /b)
If %N% GTR 9 (
	If %N:~-2,1% EQU 1 Set Ending=ів& Exit /b
	If %N:~-2,1% GEQ 2 (
		If %N:~-1% EQU 0 Set Ending=ів& Exit /b
		If %N:~-1% EQU 1 Set Ending=& Exit /b
		If %N:~-1% GEQ 2 If %N:~-1% LEQ 4 Set Ending=и& Exit /b
		If %N:~-1% GEQ 5 If %N:~-1% LEQ 9 Set Ending=ів& Exit /b)
	If %N:~-2,1% EQU 0 (
		If %N:~-1% EQU 0 Set Ending=ів& Exit /b
		If %N:~-1% EQU 1 Set Ending=& Exit /b
		If %N:~-1% GEQ 2 If %N:~-1% LEQ 4 Set Ending=и& Exit /b
		If %N:~-1% GEQ 5 If %N:~-1% LEQ 9 Set Ending=ів& Exit /b)
	)

Вдобавок выкладу созданные исполняемые файлы скомпилированные программой "Bat To Exe Converter v3.2.0.0" с использованием только этих кодов и иконки, с названием в шапке справа "WLAN Info En-Ru-Ua 1.0.rar"
MD5 хеш-сумма f5a4787be51a858a1b876495e0966f3c

Отправлено: 23:21, 07-11-2020

 

Аватара для wareznik3dll

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Busla:
Что же вы остановились на пол-пути: можно ведь и Сигн написать ;-) »
Ну если уж на то пошло то можно и так ;-)
Код: Выделить весь код
netsh.exe wlan show interfaces | findstr.exe /r /c:" Им" /c:"яние:" /c:" S" /c:"Си"
Но " S" лучше оставвить " SSID:" для избежания совпадений со строкой "Профиль : ..."
Ну вот как то так.

Отправлено: 15:12, 12-11-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата wareznik3dll:
Ну если уж на то пошло то можно и так ;-) »
Код: Выделить весь код
netsh.exe wl sh in
У кого толще Кто меньше?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 12-11-2020 | #12


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


чтобы не подумали что тоже могу только насмехаться:
Код: Выделить весь код
@echo off
for /f "skip=1 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces^|find ":"') do call :# "%%a" "%%b"
pause& exit

:#
 for /f "tokens=*" %%a in ("%~1") do for /f "tokens=*" %%b in ("%~2") do echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль" && (
   for /f %%i in ("%%a") do set "s=%%i: %%b"
  ) || (
   set "s=%%a: %%b"
  )
 >>file.txt echo %s%
exit /b
или если только на экран и то что было запрошено (но в читабельном виде или для удобства взятия в переменную):
Код: Выделить весь код
@echo off
for /f "skip=1 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces^|find ":"') do call :# "%%a" "%%b"
pause& exit

:#
 for /f "tokens=*" %%a in ("%~1") do for /f "tokens=*" %%b in ("%~2") do echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль" && (
   for /f %%i in ("%%a") do set "s=%%i: %%b"
  ) || (
   set "s=%%a: %%b"
  )
 echo %s%|findstr /ir /c:"Имя" /c:"Состояние:" /c:"SSID" /c:"Сигнал"
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:43, 12-11-2020 | #13


Аватара для wareznik3dll

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вы продолжаете с завидным упорством использовать кривой алгоритм. Вот, смотрите, я беру приведённый Вами код, и делаю алгоритм прямым: »
ОЧЕНЬ БОЛЬШОЕ СПАСИБО И ОТ ВСЕГО СЕРДЦА - эти Ваши слова натолкнули меня на упрощение своего кода до этого:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions & REM Использование дополнительных ключей.
Chcp 1251 >Nul
Title Проверка состояния Wi-Fi и уровня его сигнала.
Mode Con: Cols=78 Lines=11
Set Count=1
:Check
For /f "Tokens=1,2,* Delims=: " %%a In ('Netsh Wlan Show Interfaces') Do (
	If %%a==Имя Set "Name=%%b %%c"
	If %%a==Состояние If Not %%b==размещенной Set "State=%%b %%c"
	If %%a==SSID Set "SSID=%%b %%c"
	If %%a==Сигнал Set "Signal=%%b %%c"
	)
Echo Проверка  : %Count%
Echo Дата      : %Date%
Echo Время     : %Time%
Echo.
Echo Имя       : %Name%
Echo SSID      : %SSID%
Echo Состояние : %State%
Echo Сигнал    : %Signal%
Echo.
Echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
Set /a Count+=1
  Pause >Nul
Goto Check
Как видете он ещё короче плюс вообще не использует ни более лёгкую "Find" ни потяжелее "FindStr"

Ещё раз благодарочка.
Как по мне такие дискусии должны приводить к совершенствованию кода.

Отправлено: 16:07, 12-11-2020 | #14


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


нужна красота?
(код в кодировке OEM 866)
Код: Выделить весь код
@echo off
for /f "skip=1 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces^|find ":"') do call :# "%%a" "%%b"

Echo Дата      : %Date%
Echo Время     : %Time%
Echo.
Echo Имя       : %Имя%
Echo SSID      : %SSID%
Echo Состояние : %Состояние%
Echo Сигнал    : %Сигнал% 
pause& exit

:#
 for /f "tokens=*" %%a in ("%~1") do for /f "tokens=*" %%b in ("%~2") do echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль" && (
   for /f %%i in ("%%a") do set "%%i=%%b"
  ) || (
   set "%%a=%%b"
  )
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:31, 12-11-2020 | #15


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


это не быстрее, но удобнее тем что очень легко добавить еще одну строку, без каких-то подобных извращений
Цитата wareznik3dll:
If %%a==Состояние If Not %%b==размещенной Set "State=%%b %%c" »
например добавим BSSID:
Код: Выделить весь код
@echo off
Title Проверка состояния Wi-Fi и уровня его сигнала.
Mode Con: Cols=78 Lines=11

Set Count=1
:Check
for /f "skip=1 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces^|find ":"') do call :# "%%a" "%%b"

Echo Проверка  : %Count%
Echo Дата      : %Date%
Echo Время     : %Time%
Echo.
Echo Имя       : %Имя%
Echo SSID      : %SSID%
Echo BSSID     : %BSSID%
Echo Состояние : %Состояние%
Echo Сигнал    : %Сигнал% 
Echo.
Echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.

Set /a Count+=1
pause>nul
Goto Check

:#
 for /f "tokens=*" %%a in ("%~1") do for /f "tokens=*" %%b in ("%~2") do echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль" && (
   for /f %%i in ("%%a") do set "%%i=%%b"
  ) || (
   set "%%a=%%b"
  )
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:49, 12-11-2020 | #16


Аватара для wareznik3dll

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


По поводу использования кодовой страницы 1251 (Windows-1251)
Ответ: Хочу использовать для батника на украинском языке.

Но вообще то нужен батник на 65001" (UTF-8) для его упаковки программой "Bat To Exe Converter v3.2.0.0" к сожалению для этого подходит только она одна из возможных для выбора.
Хотя помнится в более старых версиях можно было выбратькак 1251 (Windows-1251) так и 866 (OEM 866).

Отправлено: 17:01, 12-11-2020 | #17


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата wareznik3dll:
для батника на украинском языке »
Windows-1251 - мимо, только utf-8

Отправлено: 17:12, 12-11-2020 | #18


Аватара для wareznik3dll

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата alpap:
это не быстрее, но удобнее тем что очень легко добавить еще одну строку, без каких-то подобных извращений »
Пожалуйста уточните в каком Вашем коде не быстрее или в моём коде не быстрее?

И еще на мой взгляд у Ваших кодах более трёх цыклов "For" плюс ещё и "Call" в моём последнем коде всего один цикл "For" плюс ещё и без "Call". Я думаю Вы не упростили а усложнили.

Так как я не пробовал Ваш код, не могу Вас прямо в чём то осуждать. Если можно на словах объясните в чём изюминка Вашего кода в сравнении с моим. Заранее благодарен.

Цитата alpap:
Windows-1251 - мимо, только utf-8 »
Об этом пожалуйста, если можно поточнее если можно в словах.

Отправлено: 17:19, 12-11-2020 | #19


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата wareznik3dll:
в чём изюминка Вашего кода в сравнении с моим »
в этом хотя бы
Цитата alpap:
легко добавить еще одну строку, без каких-то подобных извращений »
Цитата wareznik3dll:
не упростили а усложнили »
я и не собирался упрощать и даже говорил
Цитата alpap:
это не быстрее, »
я хотел сделать удобнее и практичнее для использования и редактирования
------
а что, нужна для этого случая прям фантастическая скорость? А вот вывод нужного по требованию из моего кода можно и через параметры сделать, из Вашего даже не представляю.

Цитата wareznik3dll:
если можно поточнее »
если просто составление bat, то 1251 пойдет, если винда на укр или скажем считать надо укр и вывести, то получалось только в utf-8

Последний раз редактировалось alpap, 12-11-2020 в 17:32.


Отправлено: 17:25, 12-11-2020 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка состояния Wi-Fi и уровня его сигнала

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Усиление Wi-Fi сигнала weritos Сетевое оборудование 3 13-03-2014 08:49
Прочее - Приоритетное использование сигнала WI-FI 2gan Сетевые технологии 36 27-06-2013 17:30
Broadcom анонсировала чипы 5G Wi-Fi для устройств начального уровня OSZone News Новости железа 1 25-05-2013 16:02
Wireless - Всплеск сигнала Wi-Fi westland77 Сетевое оборудование 6 12-07-2012 13:05
Доступ - Слабый уровень сигнала WI-FI Grafnet Microsoft Windows Vista 0 10-11-2009 17:51




 
Переход