![]() |
Проверка состояния Wi-Fi и уровня его сигнала
Вложений: 1
Есть код для проверки состояния Wi-Fi и уровня его сигнала:
Скрытый текст
Код:
@Echo Off Вопрос: Как получить более чувствительные данные, а то замечаю инфа очень медленно обновляется и вовсе не точно по сравнении с программой "Wi-Fi Scanner"? Скорость не важна Важно: только четыре строчки "Имя, SSID, Состояние, Сигнал, Наглядный (не разбросанный) обзор выводимой инфы ну и наипростейший код". Менее важно: "Количество проверок, Дата и Время конечной проверки и Только нужный размер окна консоли". Наименее важно: "Заголовок окна консоли". Ну и если получится (очень важно) рабочий код написанный с использованием кодовой таблицы 65001 (UTF-8) то-есть код должен быть сохранен именно в этой кодировке. Благодаря всем неравнодушным резальтат был добит таким кодом: Русская версия (исправленная 24.11.2020)
Код:
@Echo Off Українська версія (випрвлена 24.11.2020)
Код:
@Echo Off Вдобавок выкладу созданные исполняемые файлы скомпилированные программой "Bat To Exe Converter v3.2.0.0" с использованием только этих кодов и иконки, с названием в шапке справа "WLAN Info En-Ru-Ua 1.0.rar" MD5 хеш-сумма f5a4787be51a858a1b876495e0966f3c |
wareznik3dll, код оформляется не bold'ом, а тегом [code].
Ответ: никак. Другое дело, что сам код кривой. Нет никакой необходимости вызывать «Netsh Wlan Show Interfaces» по четыре раза на каждый чих: Скрытый текст
Код:
@echo off |
Iska, Большое спасибо за подсказки по оформлению (уже исправил) и использованию команды "FindStr".
Извините, но мой код кривой по Вашему мнению лишь потому что четыре раза вызывает "Netsh Wlan Show Interfaces" я не считаю что в этом заключается какая то кривизна а вот Ваш код при использовании кодовой страницы 1251 (Windows-1251) выдает: SSID : Бла-бла BSSID : Там-тара-рам Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала. А где же значения? : Количество проверок : 1 Имя : Беспроводное сетевое соединение Состояние : Подключено Сигнал : 78% И зачем мне значение: BSSID : Там-тара-рам |
Iska, походу команда "FindStr" понимает только "OEM 866" из кириллицы, потому как мне нужно было использование именно кодовой страницы "Windows-1251" мною и было принято использование именно указанного кода с использованием команды "Find".
Iska, по поводу вызова четыре раза "Netsh Wlan Show Interfaces" объясню кратко, нужно лишь для получения значений для каждой переменной которые в свою очередь нужны для более правильного и красивого (не разбросанного) отображения нужной информации и в нужном на мой взгляд порядке размещения. В итоге: Ничего кривого в своём коде не обнаружил. |
Код для проверки состояния Wi-Fi и уровня его сигнала с отображением даты и времени проверки:
Код:
@Echo Off |
Приму и отвечу на любые замечания.
Заранее благодарен всем неравнодушным. |
Цитата:
Цитата:
Скрытый текст
Код:
@echo off |
Цитата:
Цитата:
Код:
netsh.exe wlan show interfaces | findstr.exe /i /r /c:"Имя" /c:"Состояние:" /c:" SSID" /c:"Сигнал" "Состояние:" так и нужно оставить потому как есть строка "Состояние размещенной сети: ..." дабы не выдало нам ети две строки вместо одной, так само, как и в случае с "BSSID : ..." и "SSID : ..." Вместо "SSID" нужно вначале просто добавить пробел " SSID" дабы не было сходства с "BSSID" Вместо "Сигнал:" достаточно "Сигнал" Вдобавок отображение инфы в Вашем коде согласитесь выглядит ну очень уж разбросанным Как рас таки для этого в моём коде в цикле и используется 4 раза обращение к "Netsh Wlan Show Interfaces". |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Скрытый текст
Код:
@Echo Off Не нужно четырёх вызовов одной и той же команды с риском получения несогласованных данных. Совсем не нужно. Впрочем, дело Ваше. |
Цитата:
Код:
netsh.exe wlan show interfaces | findstr.exe /r /c:" Им" /c:"яние:" /c:" S" /c:"Си" Ну вот как то так. |
Цитата:
Код:
netsh.exe wl sh in |
чтобы не подумали что тоже могу только насмехаться:
Код:
@echo off Код:
@echo off |
Цитата:
Код:
@Echo Off Ещё раз благодарочка. Как по мне такие дискусии должны приводить к совершенствованию кода. |
нужна красота?
(код в кодировке OEM 866) Код:
@echo off |
это не быстрее, но удобнее тем что очень легко добавить еще одну строку, без каких-то подобных извращений
Цитата:
Код:
@echo off |
По поводу использования кодовой страницы 1251 (Windows-1251)
Ответ: Хочу использовать для батника на украинском языке. Но вообще то нужен батник на 65001" (UTF-8) для его упаковки программой "Bat To Exe Converter v3.2.0.0" к сожалению для этого подходит только она одна из возможных для выбора. Хотя помнится в более старых версиях можно было выбратькак 1251 (Windows-1251) так и 866 (OEM 866). |
Цитата:
|
Цитата:
И еще на мой взгляд у Ваших кодах более трёх цыклов "For" плюс ещё и "Call" в моём последнем коде всего один цикл "For" плюс ещё и без "Call". Я думаю Вы не упростили а усложнили. Так как я не пробовал Ваш код, не могу Вас прямо в чём то осуждать. Если можно на словах объясните в чём изюминка Вашего кода в сравнении с моим. Заранее благодарен. Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
------ а что, нужна для этого случая прям фантастическая скорость? А вот вывод нужного по требованию из моего кода можно и через параметры сделать, из Вашего даже не представляю. Цитата:
|
Цитата:
Цитата:
Важно: только четыре строчки "Имя, SSID, Состояние, Сигнал, Наглядный (не разбросанный) обзор выводимой инфы ну и наипростейший код", менее важно: "Количество проверок, Дата и Время конечной проверки и Только нужный размер окна консоли", и наименее важно: "Заголовок окна консоли". Цитата:
Заранее благодарен. |
Цитата:
Код:
Mode Con: Cols=78 Lines=12 Если долго мучится что то и получится. |
Ура все требования соблюдены!!!
Код:
@Echo Off Без Вас я бы такого не добился. Если кто упростит соблюдая все требования тот будет ещё лучшым. |
Ребята как Вы думаете результат добит или ешё что можно упростить или как то усовершенствовать? :help: :up2:
|
Цитата:
Цитата:
Цитата:
Код:
Echo Физ. адрес: %Physical address% |
Цитата:
требования могут поменяться Нет В шапке указал требования: Важно: только четыре строчки "Имя, SSID, Состояние, Сигнал, Наглядный (не разбросанный) обзор выводимой инфы ну и наипростейший код". Менее важно: "Количество проверок, Дата и Время конечной проверки и Только нужный размер окна консоли". Наименее важно: "Заголовок окна консоли". Ну и если получится (очень важно) рабочий код написанный с использованием кодовой таблицы 65001 (UTF-8) то-есть код должен быть сохранен именно в этой кодировке. |
смысл совершенствовать кривой код, добавьте вывод например:
Код:
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" так как зделал выше и уже втретий раз. |
Цитата:
Скрытый текст
Код:
@Echo Off Ну а для случая попроще как в моём вполне подойдет и тот что уже есть 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%" Главное забыл, при таком раскладе имена переменных короткие и самое главное НЕ ПОВТОРЯЮТСЯ. |
:cry: Теперь я уже надеюсь нашим дискусиям конец!?
Или все же есть "косяки" ... И у кого же быстрее тоньше или короче :lol: :cry: |
ну вот Вы и пришли к моему коду, иначе там никак. Да, я ни разу не говорил что код претендует на медаль и все такое, косяки есть и там, но они именно из-за кривого вывода Netsh Wlan Show Interfaces
Скрытый текст
Код:
"В системе 1 интерфейс" " " Мне тоже очень не нравится наблюдать в коде строку: Код:
echo %%a|>nul findstr /ir /c:"SSID" /c:"BSSID" /c:"Профиль" по поводу - требования не поменяются то нужен укр язык, то определенная кодировка, то нужный размер окна, все это навевает на мысли что код готовят для запуска в массы и вот там требования как раз таки и могут поменяться аж бегом и надо быть готовым к выводу любой строки из всего вывода команды. Или делать код так чтобы это было легко повторяемо пользователем или очевидно. А вырвать что-то из контекста и опираясь на вывод сделать это досягаемым максимально просто и удобно не выход, самому потом придется что-то доделать или изменить и надо будет сызнова разбираться с кодом и выводом чтобы понять почему не работает вроде бы очевидное. |
Подправленный код для вывода всей инфы без (Find и FindStr)
Код:
@Echo Off Ураинский допиливаю НЕ ЗАБУДЬТЕ ВЫСТАВИТЬ ШРИФТ В ОКНЕ КОНСОЛИ НАПРИМЕР НА "LUCIDA CONSOLE" ПОСЛЕ ЭТОГО И УВИДИТЕ ВСЮ КИРИЛИЦУ. У меня почему то норм работает НА WINDOWS 7. ВОЗМОЖНО ВЫ ИСПОЛЬЗУЕТЕ ДРУГУЮ WINDOWS ? И КАК ВСЛЕДСТВИИ РАЗНЫЕ ВЕРСИИ Netsh.EXE ПОЖАЛУЙСТА ОТПИШИТЕ. Цитата:
Всё началось с банального иногда бегаю подому с Вай-Фай адаптером для того чтобы поймать наилучшый сигнал и тогда в правильном месте и направлении закрепить долбаный адаптер. Украинский нужен так как я из Украины но а русский он и есть русский. Сам я самоучка и это моё хобби. Пожалуйста отпишите что работает а чего Вы бы подправили. |
Цитата:
Цитата:
Появление новой задачи, как брошенный в воду камень, вызовет круги на воде: - внимание публики к этой задаче, особенно с похожей проблемой - открытый код Вы мыслите только в рамках своей задачи и это понятно, но я на форуме частый гость и мыслю дальновидно да и бывал уже в подобных ситуациях. Вот эта публика и будет задавать вопросы и выдвигать другие требования. И когда вот кто-то не сможет вывести то что надо именно ему он будет кидать камень в Ваш огород. Вам то все равно, уйдете и нет проблем, а общаться и отвечать на вопросы надо тем кто останется и причесывать Ваш код или делать новый под новые требования или вот как я заранее предусматривая возможный исход. А именно. Вывод должен быть возможен всего что в команде и в правильном виде, без пробелов в начале или конце чтобы можно было не только красиво видеть на экране, а и вывести в переменную, вставить в какую-то программу и чтобы при этом не было никаких ошибок. Надо в кодировке utf-8 если, то вот такой, например вариант (практически без извращений как в Ваших кодах выше, на которые без слез смотреть тяжело): Код:
@echo off |
Цитата:
Цитата:
Но всё же каждый раз прошу дословно опишите места з изъянами. |
Цитата:
Из неё (если неправилно понял обязательно поправте) я понял
Код:
:# А что если уж понадобится и значение первой или точнее второй строки (первая наверное пуста) На мой взгляд лучше использовать имена переменных с одним (первым) словом для продления жизни оперативной памяти тем самым и жрать оперативы будет меньше ведь это позволяет так как имена даже с этим первым словом нигде не совпадают Вдобавок лучше ["%~1"] поменять на [%1] ведь оно одно и тоже, полчив код: Код:
@echo off |
Извиняюсь но еще укоротил:
Более укороченная версия (дело вкуса)
Код:
@echo off На мой взгляд полгче получилось нагрузки на проц и оперативу поменьшало хоть и чуть-чуть (иногда даже самая малость обыгрывает не на шутку) но и главное результат тотже |
Цитата:
И, кстати, Вы просили показать показать где в Ваших кодах извращения, так вот это оно и есть (все долго вытягивать, на этом покажу). Тот кто посмотрит на код бегло будет видеть команду в for /f без кавычек, а значит это файл, а в Вашем случае выходит строка, но это же надо прорабатывать ... - чем не извращение и главное для чего? Это дает какие-то плюсы? Цитата:
|
Цитата:
Код:
@echo off %1 : [" Name "] "%~1": [" Name "] %1 : [" Description "] "%~1": [" Description "] %1 : [" GUID "] "%~1": [" GUID "] %1 : [" Physical address "] "%~1": [" Physical address "] %1 : [" State "] "%~1": [" State "] %1 : [" SSID "] "%~1": [" SSID "] %1 : [" BSSID "] "%~1": [" BSSID "] %1 : [" Network type "] "%~1": [" Network type "] %1 : [" Radio type "] "%~1": [" Radio type "] %1 : [" Authentication "] "%~1": [" Authentication "] %1 : [" Cipher "] "%~1": [" Cipher "] %1 : [" Connection mode "] "%~1": [" Connection mode "] %1 : [" Channel "] "%~1": [" Channel "] %1 : [" Receive rate (Mbps) "] "%~1": [" Receive rate (Mbps) "] %1 : [" Transmit rate (Mbps) "] "%~1": [" Transmit rate (Mbps) "] %1 : [" Signal "] "%~1": [" Signal "] %1 : [" Profile "] "%~1": [" Profile "] %1 : [" Hosted network status "] "%~1": [" Hosted network status "] %1 : [" Hosted network clients "] "%~1": [" Hosted network clients "] Press any key to continue . . . Объясню ["%~1"] из этой переменной уже идущей с кавычками переменной [%1] тильдой [~] Вы забираете кавычки и потом зачем-то обратно обрамляете эту же переменную новыми таким же кавычками. Согласитесь же в конце то концов и у Вас есть косяки примеру этого,а то уже как, то задолбало говорите про мои косяки, но не всегда на них указываете. Извините просто на меня в этой теме больше бросались хоть и у Вас всех бывали косяки и я на них указывал. Плюс я самоучка и не считаю себя даже на ровне с Вами (считаю себя менее мудрым) а Вы все мудрые, но... Цитата:
Также не забудем и про уважаемого Iska Я считаю что при помощи каждого кто ведет дискуссию и получается "жемчужинка" согласитесь это командная работа. И я очень Вам признателен, что Вы так дооооолго держитесь со мной в допилке кода. Спасибо!!! |
У себя только что тоже обнаружил косяк:
Код:
for /f %%a in (%1) do set "s1=%%a" Код:
for /f %%a in (%1) do set s1=%%a Но это только ели далее не будет ни одного лишнего символа например НЕ ПОДОЙДЕТ: Код:
for /f %%a in (%1) do set s1=%%a & REM Убирает все переднии пробелы оставив при этом лишь первое слово для названия переменной. Код:
for /f %%a in (%1) do set s1=%%a& REM Убирает все переднии пробелы оставив при этом лишь первое слово для названия переменной. |
Цитата:
FOR /F ["ключи"] %переменная IN ("строка") DO команда [параметры] Но если Вы еще хотите показать кому-то что это строка то я извиняюсь, но это же Вы писали код. И в добавок IN ("строка") DO это для тех кто пишет код, а не читает и нетрудно присмотреться что в переменную %1 била послана другая переменная уже взятая в кавычки командой call :# "%%a" Эти мои извращения как Вы говорите Вы, расцениваете как ошибку или как извращение над Вашой личностью? Как мне это понимать?!! Ещё хочу узнать у Вас так как Вы умнее просмотрите ниже не пойму как но просто строка из кода: Код:
Netsh Wlan Show Interfaces Signal : 78% Profile : ................ Hosted network status : Started Hosted network clients : 7c:d6:61:bf:50:9b Что за Hosted network clients : 7c:d6:61:bf:50:9b |
Ещё одна проблема ни в Вашем последим ни в Вашем строщённом мною никак не удаётся вывести одну из строк:
Вот эту не удаётся, вылет батника: There is no wireless interface on the system. Беспроводной интерфейс в системе отсутствует. А эту удаётся: There is 1 interface on the system: В системе 1 интерфейс: А от мой хоть и с пробелами сзади в значениях двух переменных и с пробелами в начале значений каждой переменной НО РАБОТАЕТ!!! Цитата:
|
Время: 19:38. |
Время: 19:38.
© OSzone.net 2001-