Огромное спасибо всем откликнувшимся!
Уже, к своему стыду, три дня подряд разбираю только первый вариант батника предоставленого уважаемым alexii
smaharbA, у Вас какая версия reg.exe? С какой ОС?
Что самое забавное - я это всё пытаюсь реализовать на Windows7...
В строке
for /f %%i in ('reg.exe query "%sSourceKey%\" /s 2^>nul ^| find.exe /i "%sSourceKey%\{"') do (
пришлось убрать "\" после "reg.exe query "%sSourceKey%"
В строке
for /f "tokens=3 delims= " %%j in (
'reg.exe query "%%i\%sSubKey%" /v "Name" 2^>nul ^| find.exe /i "Name"'
) do echo %%j>>"!sTempFileName!"
после "delims=" оставил один пробел (в семёрке табуляция не подходит) ну и после "tokens=" соответственно поставил 2,* и в конце строки изменил "j" на "k" вобщем строка получилась:
for /f "tokens=2,* delims= " %%j in (
'reg.exe query "%%i\%sSubKey%" /v "Name" 2^>nul ^| find.exe /i "Name"'
) do echo %%k>>"!sTempFileName!"
Но к сожалению с названием коннекта написанным русскими буквами батник не работает...((
Если называю коннект латинскими буквами - то всё ОК...
Пробовал ремить :
rem ==========================================================================
:ReSet
:: chcp 1251>nul
<%sTempFileName% set /p sName=
:: chcp 866>nul
exit /b 0
rem ==========================================================================
Всё равно не работает...
Может в Windows7 как-то по другому нужно со сменой кодировки поступать?
Хотел бы ещё задать пару вопросов по этому батнику для своего развития )) :
1) Что значит:
setlocal enableextensions enabledelayedexpansion
?
2) Как работает:
?
3) Как работае конструкция:
endlocal & set %~1=%sTempFileName%
?
4) Как работает процедура ReSet :
:ReSet
chcp 1251>nul
<%sTempFileName% set /p sName=
chcp 866>nul
exit /b 0
?
Наверное я сделал глупость не поставив полностью задачу в этой теме...
А задача была такова:
При помощи
я загоняю во временный файл информацию о своих сетевых подключениях...
файл получается примерно такого содержания:
Состояние адм. Состояние Тип Имя интерфейса
---------------------------------------------------------------------
Запрещен Отключен Выделенный Подключение по локальной сети
Потом мне надо проанализировать это содержание файла: если в строке в поле "Тип" значение "Выделенный" то мы запоминаем значение поля "Имя интерфейса" из этой строки, и так с каждой строкой...
Ну и потом для каждого "Имени интерфейса" в реестре ищем то что я хотел найти в первом сообщении этой темы...
И для найденного значения (SettingID) применяю:
nvspbind /d "найденое SettingID" ms_tcpip6
nvspbind /d "найденое SettingID" ms_pacer
(nvspbind утилита с помощью которой можно удалить/добавить компоненты заданного/всех сетевых соединений)
Ну и вот что у меня получилось:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceKey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}
set sSubKey=Connection
set sType=Выделенное
netsh int sh int>int.tmp
for /F "skip=3 tokens=3,*" %%i in ( res.tmp ) do (
if %%i == %sType% for /f %%k in ('reg.exe query "%sSourceKey%" /s 2^>nul ^| find.exe /i "%sSourceKey%\{"') do (
for /f "tokens=2,* delims= " %%l in ('reg.exe query "%%k\%sSubKey%" /v "Name" 2^>nul ^| find.exe /i "Name"') do (
if %%m == %%j for /F "tokens=7 delims=\" %%n in ('echo %%k') do (
nvspbind /d %%n ms_tcpip6
nvspbind /d %%n ms_pacer
)
)
)
)
del int.tmp
endlocal
exit /b 0
С "set sType=Выделенное" не сразу получилось:
набрал в Фаре "Выделенное" - не заработало
опять открыл в Фаре, нажал Ф8, опять набрал "Выделенное" - заработало ))))
Ну и почти всё остальное, кроме нескольких мелочей, я передрал у alexii
Очень хотелось бы Вы глянули этот батник.
Может можно было бы сделать более надёжную проверку статуса поля "Тип" (ведь к примеру в ХР поле "Состояние" пустое - может и в семёрке при каких-то обстоятельствах оно может быть пустым)
Ну и вобще в общем что в этом батнике может "не очень красиво" мной написано...
Ведь я пока к сожалению слишком плоско мыслю в написании батников, и эти батники мне очень расширяют кругозор, за что огромнейшее Спасибо!
К сожалению до батника уважаемого smaharbA ещё не добрался - всё это время разбирался с первым вариантом...
Запускать - запускал - работает, но если присутствует искомое нами значение"Подключение по локальной сети" и "не в той что надо")) ветке реестра - батник возвращает и его раздел...(((
Но я обязательно и с этим вариантом попробую разобраться...
Ещё раз Спасибо всем большое за помощ!!!