PDA

Показать полную графическую версию : [решено] Проверка состояния Wi-Fi и уровня его сигнала


Страниц : 1 [2]

wareznik3dll
12-11-2020, 18:36
легко добавить еще одну строку, без каких-то подобных извращений »
Извините пожалуста, если можна строку из моего кода с извращением а если поточнее часть строки если извращение не во всей строке.
а что, нужна для этого случая прям фантастическая скорость? »

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

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

ПОЖАЛУЙСТА, ЕСЛИ МОЖНО КОД НА UTF-8 а то у меня в упор не получается.
Заранее благодарен.

wareznik3dll
12-11-2020, 19:07
Mode Con: Cols=78 Lines=11 »
Да вполне согласен только нужно изменить на:
Mode Con: Cols=78 Lines=12

Далее не углублялся но думаю где то можно что то и упростить.

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

wareznik3dll
12-11-2020, 19:47
Ура все требования соблюдены!!!

@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

ОГРОМНОЕ БЛАГОДАРЮ ВСЕМ ВАМ РЕБЯТКИ
Без Вас я бы такого не добился.

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

wareznik3dll
12-11-2020, 21:32
Ребята как Вы думаете результат добит или ешё что можно упростить или как то усовершенствовать? :help: :up2:

alpap
12-11-2020, 23:15
если можна строку из моего кода с извращением »
я уже приводил выше и там есть такая не одна, если не увидели это уже к окулисту
соблюдая все требования »
требования могут поменяться
или как то усовершенствовать »
смысл совершенствовать кривой код, добавьте вывод например:

Echo Физ. адрес: %Physical address%

а ведь если будет такой запрос (там еще много: Network type, Radio type, ...)

wareznik3dll
12-11-2020, 23:40
я уже приводил выше и там есть такая не одна, если не увидели это уже к окулисту »

Вопрос в окончательных двух кодах на русском и украинском кодах где Вы видете изьян?

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

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

wareznik3dll
13-11-2020, 00:01
смысл совершенствовать кривой код, добавьте вывод например:
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"

В дальнейшем попрошу после Ваших слов: кривой код сражу же указать на этот кривой код а не просто Бла-бла
так как зделал выше и уже втретий раз.

wareznik3dll
13-11-2020, 02:26
а ведь если будет такой запрос (там еще много: 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, 02:58
:cry: Теперь я уже надеюсь нашим дискусиям конец!?
Или все же есть "косяки" ...
И у кого же быстрее тоньше или короче :lol: :cry:

alpap
13-11-2020, 14:04
ну вот Вы и пришли к моему коду, иначе там никак. Да, я ни разу не говорил что код претендует на медаль и все такое, косяки есть и там, но они именно из-за кривого вывода 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
по поводу - требования не поменяются
то нужен укр язык, то определенная кодировка, то нужный размер окна, все это навевает на мысли что код готовят для запуска в массы и вот там требования как раз таки и могут поменяться аж бегом и надо быть готовым к выводу любой строки из всего вывода команды. Или делать код так чтобы это было легко повторяемо пользователем или очевидно. А вырвать что-то из контекста и опираясь на вывод сделать это досягаемым максимально просто и удобно не выход, самому потом придется что-то доделать или изменить и надо будет сызнова разбираться с кодом и выводом чтобы понять почему не работает вроде бы очевидное.

wareznik3dll
13-11-2020, 18:22
@Echo Off
Chcp 65001 >Nul
Set Count=1
REM Не используйте (удалите) эту и три нижние строки если Вам уже не нужно сравнивать сходство.
Mode Con: Cols=68 Lines=53
Netsh Wlan Show Interfaces
Echo -------- В верху оригинал --------- С низу результат кода --------
:Check
SetLocal EnableExtensions & REM Использование дополнительных ключей.
REM For /f "Tokens=1* Delims=:" %%a In ('Netsh Wlan Show Interfaces') Do (
REM If "%%a"=="There is 1 interface on the system" Set Interface=%%a:
REM For /f "Tokens=1*" %%c In ("%%a") Do Set %%c=%%b
REM )
REM Set There=%Interface%
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"
)
)
:EngVersion
Title Check Wi-Fi status and signal strength.
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.
Pause >Nul
:RusVersion
Title Проверка состояния Wi-Fi и уровня его сигнала.
Mode Con: Cols=78 Lines=29
Echo.
Echo Проверка : %Count%
Echo Дата : %Date%
Echo Время : %Time%
Echo.
REM There is no wireless interface on the system.
REM Беспроводной интерфейс в системе отсутствует.
If "%There%"=="There is 1 interface on the system: " (
Echo В системе 1 интерфейс:
Echo.
Echo Имя :%Name%
Echo Описание :%Description%
Echo Идентификатор GUID :%GUID%
Echo Физический адрес :%Physical%
REM Echo State: [%State%]
If "%State%"==" ad hoc network formed" (
Echo Состояние : Создана сеть компьютер-компьютер
Echo SSID :%SSID%
Echo BSSID :%BSSID%
If "%Network%"==" Adhoc" (
Echo Тип сети : Прямое соединение
)
Echo Тип радио :%Radio%
Echo Проверка подлинности :%Authentication%
Echo Шифр :%Cipher%
REM Echo Connection: [%Connection%]
If "%Connection%"==" Auto Connect" (
Echo Режим подключения : Автоматическое подключение
)
If "%Connection%"==" Profile" (
Echo Режим подключения : Профиль
)
Echo Канал :%Channel%
Echo Скорость приема ^(Мбит/с^) :%Receive%
Echo Скорость передачи ^(Мбит/с^) :%Transmit%
Echo Сигнал :%Signal%]
Echo Профиль :%Profile%]
)
If "%State%"==" connected" (
Echo Состояние : Подключено
Echo SSID :%SSID%
Echo BSSID :%BSSID%
REM Echo Network: [%Network%]
If "%Network%"==" Infrastructure" (
Echo Тип сети : Инфраструктура
)
Echo Тип радио :%Radio%
Echo Проверка подлинности :%Authentication%
Echo Шифр :%Cipher%
REM Echo Connection: [%Connection%]
If "%Connection%"==" Auto Connect" (
Echo Режим подключения : Автоматическое подключение
)
If "%Connection%"==" Profile" (
Echo Режим подключения : Профиль
)
Echo Канал :%Channel%
Echo Скорость приема ^(Мбит/с^) :%Receive%
Echo Скорость передачи ^(Мбит/с^) :%Transmit%
Echo Сигнал :%Signal%]
Echo Профиль :%Profile%]
)
If "%State%"==" disconnected" (
Echo Состояние : Отключено
Echo SSID : Недоступно ^(Состояние : Отключено^)
Echo BSSID : Недоступно ^(Состояние : Отключено^)
Echo Тип сети : Недоступно ^(Состояние : Отключено^)
Echo Тип радио : Недоступно ^(Состояние : Отключено^)
Echo Проверка подлинности : Недоступно ^(Состояние : Отключено^)
Echo Шифр : Недоступно ^(Состояние : Отключено^)
Echo Режим подключения : Недоступно ^(Состояние : Отключено^)
Echo Канал : Недоступно ^(Состояние : Отключено^)
Echo Скорость приема ^(Мбит/с^) : Недоступно ^(Состояние : Отключено^)
Echo Скорость передачи ^(Мбит/с^) : Недоступно ^(Состояние : Отключено^)
Echo Сигнал : Недоступно ^(Состояние : Отключено^)
Echo Профиль : Недоступно ^(Состояние : Отключено^)
)
)
If "%There%"=="There is no wireless interface on the system." (
Echo Беспроводной интерфейс в системе отсутствует.
Echo.
Echo Имя : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Описание : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Идентификатор GUID : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Физический адрес : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Состояние : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo SSID : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo BSSID : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Тип сети : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Тип радио : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Проверка подлинности : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Шифр : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Режим подключения : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Канал : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Скорость приема ^(Мбит/с^) : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Скорость передачи ^(Мбит/с^) : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Сигнал : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
Echo Профиль : Недоступно ^(Беспровод. интерфейс … отсутствует.^)
)
Echo.
REM Echo Hosted: [%Hosted%]
If "%Hosted%"==" Not available" (
Echo Состояние размещенной сети : Недоступно
)
If "%Hosted%"==" Not started" (
Echo Состояние размещенной сети : Не запущено
)
If "%Hosted%"==" Started" (
Echo Состояние размещенной сети : Запущено
)
Echo.
Echo Нажмите любую клавишу для обновления информации о состоянии и уровне сигнала.
Pause >Nul

Set /a Count+=1
EndLocal & Set Count=%Count%
Goto Check

Ураинский допиливаю
НЕ ЗАБУДЬТЕ ВЫСТАВИТЬ ШРИФТ В ОКНЕ КОНСОЛИ НАПРИМЕР НА "LUCIDA CONSOLE" ПОСЛЕ ЭТОГО И УВИДИТЕ ВСЮ КИРИЛИЦУ.
У меня почему то норм работает НА WINDOWS 7.

ВОЗМОЖНО ВЫ ИСПОЛЬЗУЕТЕ ДРУГУЮ WINDOWS ?
И КАК ВСЛЕДСТВИИ РАЗНЫЕ ВЕРСИИ Netsh.EXE
ПОЖАЛУЙСТА ОТПИШИТЕ.

все это навевает на мысли что код готовят для запуска в массы »
Извините но будете смеятся код делаю лиш для себя.
Всё началось с банального иногда бегаю подому с Вай-Фай адаптером для того чтобы поймать наилучшый сигнал и тогда в правильном месте и направлении закрепить долбаный адаптер.
Украинский нужен так как я из Украины но а русский он и есть русский.
Сам я самоучка и это моё хобби.
Пожалуйста отпишите что работает а чего Вы бы подправили.

alpap
13-11-2020, 19:51
Украинский нужен так как я из Украины »
? Я тоже из Украины, но мне как-то почти не нужен, постольку-поскольку (сейчас больше, конечно, а раньше в Киеве он вообще был даже не в почете - село)
код делаю лишь для себя. »
и те не менее ...
Появление новой задачи, как брошенный в воду камень, вызовет круги на воде:
- внимание публики к этой задаче, особенно с похожей проблемой
- открытый код
Вы мыслите только в рамках своей задачи и это понятно, но я на форуме частый гость и мыслю дальновидно да и бывал уже в подобных ситуациях.
Вот эта публика и будет задавать вопросы и выдвигать другие требования. И когда вот кто-то не сможет вывести то что надо именно ему он будет кидать камень в Ваш огород. Вам то все равно, уйдете и нет проблем, а общаться и отвечать на вопросы надо тем кто останется и причесывать Ваш код или делать новый под новые требования или вот как я заранее предусматривая возможный исход. А именно. Вывод должен быть возможен всего что в команде и в правильном виде, без пробелов в начале или конце чтобы можно было не только красиво видеть на экране, а и вывести в переменную, вставить в какую-то программу и чтобы при этом не было никаких ошибок. Надо в кодировке utf-8 если, то вот такой, например вариант (практически без извращений как в Ваших кодах выше, на которые без слез смотреть тяжело):

@echo off
chcp 65001>nul

for /f "skip=2 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces') do set "s2=%%b"& call :# "%%a"

echo Имя : %Name%
echo Описание : %Description%
echo Идентификатор GUID : %GUID%
echo Физический адрес : %Physical address%
echo Состояние : %State%
echo SSID : %SSID%
echo BSSID : %BSSID%
echo Тип сети : %Network type%
echo Тип радио : %Radio type%
echo Проверка подлинности : %Authentication%
echo Шифр : %Cipher%
echo Режим подключения : %Connection mode%
echo Канал : %Channel%
echo Скорость приема (Мбит/с) : %Receive rate (Mbps)%
echo Скорость передачи (Мбит/с) : %Transmit rate (Mbps)%
echo Сигнал : %Signal%
echo Профиль : %Profile%
echo Состояние размещенной сети : %Hosted network status%
pause& exit

:#
for /f "tokens=1-3" %%a in ("%~1") do (
set "s1=%%a"
if not "%%b"=="" set "s1=%%a %%b"
if not "%%c"=="" set "s1=%%a %%b %%c"
)
if "%s2:~-1%"==" " set "s2=%s2:~0,-1%"
set "%s1%=%s2:~1%"
exit /b

разные нужные Вам финтифлюшки (размер окна, язык, заголовок и пр.) добавьте сами, тут на вкус и цвет фломастеры разные.

wareznik3dll
13-11-2020, 20:23
(практически без извращений как в Ваших кодах выше, на которые без слез смотреть тяжело): »
Так я не пойму где в моём коде изъян
Подправленный код для вывода всей инфы без (Find и FindStr) »
или Вы его не пробовали, если проблема в начальных пробелах в значениях переменной или в отсутствии (переведённых на другой язык) значений, тогда и над этим подумаю может и самому пригодится.

Но всё же каждый раз прошу дословно опишите места з изъянами.

wareznik3dll
13-11-2020, 21:31
:# for /f "tokens=1-3" %%a in ("%~1") do (
set "s1=%%a"
if not "%%b"=="" set "s1=%%a %%b"
if not "%%c"=="" set "s1=%%a %%b %%c"
)
if "%s2:~-1%"==" " set "s2=%s2:~0,-1%"
set "%s1%=%s2:~1%"
exit /b »

:#
REM Переменная %1 всё что до : (со всеми пробелами) для использования в названиях переменных.
for /f "tokens=1-3" %%a in ("%~1") do (
set "s1=%%a" & REM Присваивает первое слово (до наступления пробела) для названия переменной.
if not "%%b"=="" set "s1=%%a %%b" & REM Если для названия переменной подпадает (существует) второе слово, тогда лепит это слово к первому слову для названия переменной.
if not "%%c"=="" set "s1=%%a %%b %%c" & REM Если для названия переменной подпадает (существует) третье слово, тогда лепит это слово к первому и второму словам для названия переменной.
)
if "%s2:~-1%"==" " set "s2=%s2:~0,-1%" & REM Убирает пробелы сзади значений переменной если таковы имеются.
set "%s1%=%s2:~1%" & REM Убирает пробелы спереди значений переменной потому, что они там везде имеются.
exit /b
А что если уж понадобится и значение первой или точнее второй строки (первая наверное пуста)

На мой взгляд лучше использовать имена переменных с одним (первым) словом для продления жизни оперативной памяти тем самым и жрать оперативы будет меньше ведь это позволяет так как имена даже с этим первым словом нигде не совпадают
Вдобавок лучше ["%~1"] поменять на [%1] ведь оно одно и тоже, полчив код:
@echo off
chcp 65001>nul

for /f "skip=2 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces') do set "s2=%%b"& call :# "%%a"

echo Имя : "%Name%"
echo Описание : "%Description%"
echo Идентификатор GUID : "%GUID%"
echo Физический адрес : "%Physical%"
echo Состояние : "%State%"
echo SSID : "%SSID%"
echo BSSID : "%BSSID%"
echo Тип сети : "%Network%"
echo Тип радио : "%Radio%"
echo Проверка подлинности : "%Authentication%"
echo Шифр : "%Cipher%"
echo Режим подключения : "%Connection%"
echo Канал : "%Channel%"
echo Скорость приема (Мбит/с) : "%Receive%"
echo Скорость передачи (Мбит/с) : "%Transmit%"
echo Сигнал : "%Signal%"
echo Профиль : "%Profile%"
echo Состояние размещенной сети : "%Hosted%"
pause& exit

:#
for /f "tokens=1*" %%a in (%1) do (
set "s1=%%a"
)
if "%s2:~-1%"==" " set "s2=%s2:~0,-1%"
set "%s1%=%s2:~1%"
exit /b

wareznik3dll
13-11-2020, 22:03
Извиняюсь но еще укоротил:
@echo off
chcp 65001>nul

for /f "skip=3 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces') do set "s2=%%b"& call :# "%%a"

echo Имя : %Name%
echo Описание : %Description%
echo Идентификатор GUID : %GUID%
echo Физический адрес : %Physical%
echo Состояние : %State%
echo SSID : %SSID%
echo BSSID : %BSSID%
echo Тип сети : %Network%
echo Тип радио : %Radio%
echo Проверка подлинности : %Authentication%
echo Шифр : %Cipher%
echo Режим подключения : %Connection%
echo Канал : %Channel%
echo Скорость приема (Мбит/с) : %Receive%
echo Скорость передачи (Мбит/с) : %Transmit%
echo Сигнал : %Signal%
echo Профиль : %Profile%
echo Состояние размещенной сети : %Hosted%
pause& exit

:#
for /f %%a in (%1) do set "s1=%%a" & REM Убирает все переднии пробелы оставив при этом лишь первое слово для названия переменной.
if "%s2:~-1%"==" " set "s2=%s2:~0,-1%" & REM Убирает один задний пробел из значения переменной, там где они имеются.
set "%s1%=%s2:~1%" & REM Убирает один передний пробел из значения переменной, они там в каждом значении переменной.
exit /b

На мой взгляд полгче получилось нагрузки на проц и оперативу поменьшало хоть и чуть-чуть (иногда даже самая малость обыгрывает не на шутку) но и главное результат тотже

alpap
14-11-2020, 00:05
Вдобавок лучше ["%~1"] поменять на [%1] ведь оно одно и тоже »
ну как сказать, если так написать и проверить, то да, но когда вдруг придет время редактировать, то появляется сразу два места для возможных проблем, лучше перестраховаться и делать как надо. Пример этому: set "name=%x%" и set name=%x% и говорить я точно знаю что выше переменная %x% не содержит пробела, но иногда наступает тот день в году когда незаряженное ружье стреляет.
И, кстати, Вы просили показать показать где в Ваших кодах извращения, так вот это оно и есть (все долго вытягивать, на этом покажу). Тот кто посмотрит на код бегло будет видеть команду в for /f без кавычек, а значит это файл, а в Вашем случае выходит строка, но это же надо прорабатывать ... - чем не извращение и главное для чего? Это дает какие-то плюсы?
получилось нагрузки на проц и оперативу поменьшало хоть и чуть-чуть »
сильно в этом сомневаюсь, возможно, но нмв не стоит оно того, ну дело Ваше, я дал рабочий проверенный код, а Вы уж крутите его для себя как угодно, шаблон есть и учиться никогда не вредно.

wareznik3dll
14-11-2020, 01:00
Вдобавок лучше ["%~1"] поменять на [%1] ведь оно одно и тоже » »
Ещё раз повторю кодом они идентичны присмотритесь к [call :# "%%a"] Вы ж здесь уже взяли в кавычки
@echo off
chcp 65001>nul

for /f "skip=3 tokens=1* delims=:" %%a in ('Netsh Wlan Show Interfaces') do set "s2=%%b"& call :# "%%a"
pause
:#
Echo %%1 : [%1]
Echo "%%~1": ["%~1"]
exit /b
Выводом будет:

%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
Я считаю что при помощи каждого кто ведет дискуссию и получается "жемчужинка" согласитесь это командная работа.
И я очень Вам признателен, что Вы так дооооолго держитесь со мной в допилке кода.
Спасибо!!!

wareznik3dll
14-11-2020, 01:31
У себя только что тоже обнаружил косяк:
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 Убирает все переднии пробелы оставив при этом лишь первое слово для названия переменной.
Убрав пробел между [a &] в [%%a & REM]

wareznik3dll
14-11-2020, 02:57
Тот кто посмотрит на код бегло будет видеть команду в for /f без кавычек, а значит это файл, а в Вашем случае выходит строка »

Вы имеете в виду это:
FOR /F ["ключи"] %переменная IN ("строка") DO команда [параметры]
Но если Вы еще хотите показать кому-то что это строка то я извиняюсь, но это же Вы писали код.

И в добавок IN ("строка") DO это для тех кто пишет код, а не читает и нетрудно присмотреться что в переменную %1 била послана другая переменная уже взятая в кавычки командой call :# "%%a"

Эти мои извращения как Вы говорите Вы, расцениваете как ошибку или как извращение над Вашой личностью?
Как мне это понимать?!!

Ещё хочу узнать у Вас так как Вы умнее просмотрите ниже не пойму как но просто строка из кода:
Netsh Wlan Show Interfaces
Дала мне на вывод чуднную инфу, которая во второй раз и 100-й больше не является:

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

wareznik3dll
14-11-2020, 05:03
Ещё одна проблема ни в Вашем последим ни в Вашем строщённом мною никак не удаётся вывести одну из строк:

Вот эту не удаётся, вылет батника:
There is no wireless interface on the system.
Беспроводной интерфейс в системе отсутствует.

А эту удаётся:
There is 1 interface on the system:
В системе 1 интерфейс:

А от мой хоть и с пробелами сзади в значениях двух переменных и с пробелами в начале значений каждой переменной
НО РАБОТАЕТ!!!
Подправленный код для вывода всей инфы без (Find и FindStr) »

Хотя уже задумывал использовать Ваш подпиленный мной, но видно опять придётся вернуться к своему




© OSzone.net 2001-2012