Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум 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, 4 просмотров)
Есть код для проверки состояния 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

 

Ветеран


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

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


wareznik3dll, код оформляется не bold'ом, а тегом [code].

Ответ: никак.

Другое дело, что сам код кривой. Нет никакой необходимости вызывать «Netsh Wlan Show Interfaces» по четыре раза на каждый чих:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

title Проверка состояния Wi-Fi и уровня его сигнала.

:Repeat

netsh.exe wlan show interfaces | findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:"SSID" /c:"Сигнал:"

echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
>nul pause

goto :Repeat

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

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



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

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


Аватара для wareznik3dll

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


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

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


Iska, Большое спасибо за подсказки по оформлению (уже исправил) и использованию команды "FindStr".
Извините, но мой код кривой по Вашему мнению лишь потому что четыре раза вызывает "Netsh Wlan Show Interfaces" я не считаю что в этом заключается какая то кривизна а вот Ваш код при использовании кодовой страницы 1251 (Windows-1251) выдает:

SSID : Бла-бла
BSSID : Там-тара-рам
Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.


А где же значения? :

Количество проверок : 1
Имя : Беспроводное сетевое соединение
Состояние : Подключено
Сигнал : 78%

И зачем мне значение:
BSSID : Там-тара-рам

Последний раз редактировалось wareznik3dll, 11-11-2020 в 14:15.


Отправлено: 13:56, 11-11-2020 | #3


Аватара для wareznik3dll

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


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

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


Iska, походу команда "FindStr" понимает только "OEM 866" из кириллицы, потому как мне нужно было использование именно кодовой страницы "Windows-1251" мною и было принято использование именно указанного кода с использованием команды "Find".

Iska, по поводу вызова четыре раза "Netsh Wlan Show Interfaces" объясню кратко, нужно лишь для получения значений для каждой переменной которые в свою очередь нужны для более правильного и красивого (не разбросанного) отображения нужной информации и в нужном на мой взгляд порядке размещения.

В итоге:
Ничего кривого в своём коде не обнаружил.

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


Отправлено: 14:26, 11-11-2020 | #4


Аватара для wareznik3dll

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


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

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


Код для проверки состояния Wi-Fi и уровня его сигнала с отображением даты и времени проверки:

Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions & REM Использование дополнительных ключей.
Chcp 1251 >Nul
Title Проверка состояния Wi-Fi и уровня его сигнала.
Mode Con: Cols=78 Lines=11
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 Дата      : %Date%
Echo Время     : %Time%
Echo.
Echo Имя       : %Name%
Echo SSID      : %SSID%
Echo Состояние : %State%
Echo Сигнал    : %Signal%
Echo.
Echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
Set /a Count+=1
  Pause >Nul
Goto Check

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


Аватара для wareznik3dll

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


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

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


Приму и отвечу на любые замечания.
Заранее благодарен всем неравнодушным.

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


Ветеран


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

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


Цитата wareznik3dll:
а вот Ваш код при использовании кодовой страницы 1251 (Windows-1251) выдает: »
Это Ваши проблемы, коллега, что Вы решили использовать не предназначенную кодовую страницу для сохранения пакетного файла.

Цитата wareznik3dll:
И зачем мне значение:
BSSID : Там-тара-рам »
Добавьте выделенное:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

title Проверка состояния Wi-Fi и уровня его сигнала.

:Repeat

netsh.exe wlan show interfaces | findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:"SSID" /c:"Сигнал:" | find.exe /i /v "BSSID"

echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
>nul pause

goto :Repeat

endlocal
exit /b 0

Отправлено: 22:56, 11-11-2020 | #7


Аватара для wareznik3dll

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


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

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


Цитата Iska:
Это Ваши проблемы, коллега, что Вы решили использовать не предназначенную кодовую страницу для сохранения пакетного файла. >
Во первых спасибо Вам за критику а вот по поводу что я использую непредназначенную кодовую страницу это как то не вяжется бывает нужно использовать и кодовую таблицу 65001 (UTF-8) а также и любые другие, не мне Вам объяснять я вижу Вы очень смышленый человек и очень многое понимаете (сказано не в насмешку).
Цитата Iska:
netsh.exe wlan show interfaces | findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:"SSID" /c:"Сигнал:" | find.exe /i /v "BSSID" >
В этом месте я бы сократил Ваш код для быстроты (зачем лишнее) на:
Код: Выделить весь код
netsh.exe wlan show interfaces | findstr.exe /i /r /c:"Имя" /c:"Состояние:" /c:" SSID" /c:"Сигнал"
Вместо "Имя:" достаточно "Имя"
"Состояние:" так и нужно оставить потому как есть строка "Состояние размещенной сети: ..." дабы не выдало нам ети две строки вместо одной, так само, как и в случае с "BSSID : ..." и "SSID : ..."
Вместо "SSID" нужно вначале просто добавить пробел " SSID" дабы не было сходства с "BSSID"
Вместо "Сигнал:" достаточно "Сигнал"

Вдобавок отображение инфы в Вашем коде согласитесь выглядит ну очень уж разбросанным
Как рас таки для этого в моём коде в цикле и используется 4 раза обращение к "Netsh Wlan Show Interfaces".

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


Ветеран


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

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


Цитата wareznik3dll:
Вместо "Сигнал:" достаточно "Сигнал" »
Что же вы остановились на пол-пути: можно ведь и Сигн написать ;-)
Это сообщение посчитали полезным следующие участники:

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


Ветеран


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

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


Цитата wareznik3dll:
Iska, по поводу вызова четыре раза "Netsh Wlan Show Interfaces" объясню кратко, нужно лишь для получения значений для каждой переменной которые в свою очередь нужны для более правильного и красивого (не разбросанного) отображения нужной информации и в нужном на мой взгляд порядке размещения. »
Тогда Вам нужно научиться делать сие правильно.

Цитата wareznik3dll:
а вот по поводу что я использую непредназначенную кодовую страницу это как то не вяжется бывает нужно использовать и кодовую таблицу 65001 (UTF-8) а также и любые другие, »
В данном случае нет ни малейшей необходимости использовать какую-либо иную кодовую страницу вместо OEM/866. Вы её, кстати, даже не возвращаете после отработки Вашего пакетного файла.

Цитата wareznik3dll:
В этом месте я бы сократил Ваш код для быстроты (зачем лишнее) на: »
Потому что, это не лишнее.

Цитата wareznik3dll:
Как рас таки для этого в моём коде в цикле и используется 4 раза обращение к "Netsh Wlan Show Interfaces". »
Вы продолжаете с завидным упорством использовать кривой алгоритм. Вот, смотрите, я беру приведённый Вами код, и делаю алгоритм прямым:
Скрытый текст
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions & REM Использование дополнительных ключей.

rem Title Проверка состояния Wi-Fi и уровня его сигнала.
rem Mode Con: Cols=78 Lines=11
Set Count=1

:Check
	For /f "Tokens=1,* Delims=: " %%a In ('Netsh Wlan Show Interfaces ^| findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:"SSID" /c:"Сигнал:" ^| find.exe /i /v "BSSID"') Do (
		If "%%a" equ "Имя"       Set "Name=%%b"
		If "%%a" equ "Состояние" Set "State=%%b"
		If "%%a" equ "SSID"      Set "SSID=%%b"
		If "%%a" equ "Сигнал"    Set "Signal=%%b"
	)

	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

Не нужно четырёх вызовов одной и той же команды с риском получения несогласованных данных. Совсем не нужно.

Впрочем, дело Ваше.

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



Компьютерный форум 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




 
Переход