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

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


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

Цитата alpap:
если просто составление bat, то 1251 пойдет, если винда на укр или скажем считать надо укр и вывести, то получалось только в utf-8 »
ПОЖАЛУЙСТА, ЕСЛИ МОЖНО КОД НА UTF-8 а то у меня в упор не получается.
Заранее благодарен.

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



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

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


Аватара для wareznik3dll

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


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

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


Цитата alpap:
Mode Con: Cols=78 Lines=11 »
Да вполне согласен только нужно изменить на:
Код: Выделить весь код
Mode Con: Cols=78 Lines=12
Далее не углублялся но думаю где то можно что то и упростить.

Если долго мучится что то и получится.

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


Аватара для wareznik3dll

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


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

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


Ура все требования соблюдены!!!

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


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

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


Аватара для wareznik3dll

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


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

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


Ребята как Вы думаете результат добит или ешё что можно упростить или как то усовершенствовать?

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


Ветеран


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

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


Цитата wareznik3dll:
если можна строку из моего кода с извращением »
я уже приводил выше и там есть такая не одна, если не увидели это уже к окулисту
Цитата wareznik3dll:
соблюдая все требования »
требования могут поменяться
Цитата wareznik3dll:
или как то усовершенствовать »
смысл совершенствовать кривой код, добавьте вывод например:
Код: Выделить весь код
Echo Физ. адрес: %Physical address%
а ведь если будет такой запрос (там еще много: Network type, Radio type, ...)

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


Аватара для wareznik3dll

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


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

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


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

требования могут поменяться
Нет

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

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


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


Аватара для wareznik3dll

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


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

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


смысл совершенствовать кривой код, добавьте вывод например:
Код: Выделить весь код
Echo Физ. адрес: %Physical address%
Извените я терпел Ваши слова кривой код тут и там, даже каждый раз пытался исправлять и думаю исправил.
Вы на томесть ни разу не исправляли мои весомые указания на Ваши косяки которые действительно косяки например зачем:
Код: Выделить весь код
('Netsh Wlan Show Interfaces ^| findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:"SSID" /c:"Сигнал:" ^| find.exe /i /v "BSSID"')
если можно просто:
Код: Выделить весь код
('Netsh Wlan Show Interfaces ^| findstr.exe /i /r /c:"Имя:" /c:"Состояние:" /c:" SSID" /c:"Сигнал:"')
Я же прямо указал что есть лишнее и оно:
Код: Выделить весь код
 ^| find.exe /i /v "BSSID"
В дальнейшем попрошу после Ваших слов: кривой код сражу же указать на этот кривой код а не просто Бла-бла
так как зделал выше и уже втретий раз.

Отправлено: 00:01, 13-11-2020 | #27


Аватара для wareznik3dll

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


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

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


Цитата alpap:
а ведь если будет такой запрос (там еще много: Network type, Radio type, ...) »
Ну в таком случае держите код с полным фаршем, все что Вам не нужно Вы как умный человек отрежьте:
Скрытый текст
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions & REM Использование дополнительных ключей.
Chcp 65001 >Nul
Title Check Wi-Fi status and signal strength.
Set Count=1
   REM Не используйте (удалите) эту и три нижние строки если Вам уже не нужно сравнивать сходство.
Mode Con: Cols=68 Lines=53
Netsh Wlan Show Interfaces
Echo  -------- В верху оригинал --------- С низу результат кода --------
:Check
For /f "Tokens=1,* Delims=: " %%a In ('Netsh Wlan Show Interfaces') Do (
	For /f "Tokens=1,* Delims=:" %%c In ("%%b") Do (
		If Not "%%d"=="" (Set "%%a=%%d") Else (Set "%%a= %%b")
		If "%%a"=="BSSID" Set "BSSID= %%b"
		If "%%a"=="There" Set "There=%%a %%b"
		)
	)
   REM Раскомментируйте нижнюю строку если не надо сравнивать, либо же закомментируйте её если желаете сравнить сходство.
REM Mode Con: Cols=68 Lines=29
Echo.
Echo Check                 : %Count%
Echo Date                  : %Date%
Echo Time                  : %Time%
Echo.
Echo    %There%
Echo.
Echo Name                  :%Name%
Echo Description           :%Description%
Echo GUID                  :%GUID%
Echo Physical address      :%Physical%
Echo State                 :%State%
Echo SSID                  :%SSID%
Echo BSSID                 :%BSSID%
Echo Network type          :%Network%
Echo Radio type            :%Radio%
Echo Authentication        :%Authentication%
Echo Cipher                :%Cipher%
Echo Connection mode       :%Connection%
Echo Channel               :%Channel%
Echo Receive rate (Mbps)   :%Receive%
Echo Transmit rate (Mbps)  :%Transmit%
Echo Signal                :%Signal%
Echo Profile               :%Profile%
Echo.
Echo Hosted network status :%Hosted%
Echo.
Echo Press any key to update the status and signal strength information.
Set /a Count+=1
Pause >Nul
Goto Check


Ну а для случая попроще как в моём вполне подойдет и тот что уже есть

Name :%Name%
Description :%Description%
GUID :%GUID%
Physical address :%Physical%
State :%State%
SSID :%SSID%
BSSID :%BSSID%
Network type :%Network%
Radio type :%Radio%
Authentication :%Authentication%
Cipher :%Cipher%
Connection mode :%Connection%
Channel :%Channel%
Receive rate (Mbps) :%Receive%
Transmit rate (Mbps) :%Transmit%
Signal :%Signal%
Profile :%Profile%

Hosted network status :%Hosted%

ИМЕНА ПЕРЕМЕННЫХ ВЫДЕЛИЛ ЖИРНЫМ ИХ ЗНАЧЕНИЕ - ВСЁ ЧТО ПОСЛЕ ":"
Например, за "Physical address" он же "Физический адрес" отвечает переменная "%Physical%"

Главное забыл, при таком раскладе имена переменных короткие и самое главное НЕ ПОВТОРЯЮТСЯ.

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


Отправлено: 02:26, 13-11-2020 | #28


Аватара для wareznik3dll

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


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

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


Теперь я уже надеюсь нашим дискусиям конец!?
Или все же есть "косяки" ...
И у кого же быстрее тоньше или короче

Отправлено: 02:58, 13-11-2020 | #29


Ветеран


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

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


ну вот Вы и пришли к моему коду, иначе там никак. Да, я ни разу не говорил что код претендует на медаль и все такое, косяки есть и там, но они именно из-за кривого вывода Netsh Wlan Show Interfaces
Скрытый текст

Код: Выделить весь код
"В системе 1 интерфейс" " "
"    Имя" "                                xxxxxxxxxx"
"    Описание" "                       [CommView] Atheros AR9285 Wireless Network Adapter"
"    Идентификатор GUID" "   xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
"    Физический адрес" "       xxxxxxxxxxxxxxxxx"
"    Состояние" "                     Подключено"
"    SSID                   " " xxxxxxxxx"
"    BSSID                  " " xxxxxxxxxxxxxxxxx"
"    Тип сети" "                          Инфраструктура"
"    Тип радио" "                        802.11g"
"    Проверка подлинности" "  WPA2-Personal"
"    Шифр" "                                CCMP"
"    Режим подключения" "      Автоматическое подключение"
"    Канал" "                               1"
"    Скорость приема (Мбит/с)" "    36"
"    Скорость передачи (Мбит/с)" " 36"
"    Сигнал" "                                     100% "
"    Профиль                " " xxxxxxxxx "
"    Состояние размещенной сети" " Недоступно"

Мне тоже очень не нравится наблюдать в коде строку:
Код: Выделить весь код
echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль"
и всего что с ней связано, но повторюсь, это все из-за кривого вывода, иначе вообще была бы одна строка кода и далее блок echo
по поводу - требования не поменяются
то нужен укр язык, то определенная кодировка, то нужный размер окна, все это навевает на мысли что код готовят для запуска в массы и вот там требования как раз таки и могут поменяться аж бегом и надо быть готовым к выводу любой строки из всего вывода команды. Или делать код так чтобы это было легко повторяемо пользователем или очевидно. А вырвать что-то из контекста и опираясь на вывод сделать это досягаемым максимально просто и удобно не выход, самому потом придется что-то доделать или изменить и надо будет сызнова разбираться с кодом и выводом чтобы понять почему не работает вроде бы очевидное.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:04, 13-11-2020 | #30



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




 
Переход