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

Показать сообщение отдельно

Пользователь


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

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


Внимание! Перед применением скрипта обязательно:
1) Создайте контрольную точку восстановления системы.
2) Экспортируйте оперируемую ветвь реестра в файл .reg


Ограничения кода:
- Значение параметра не должно начинаться со знака разделителя (_), иначе будет перезаписано значением не до, а после этого знака.
- Код работает только в OS ver. >= Vista.

Код: Выделить весь код
::Код предназначен только для работы в OS ver. >= Vista.
@echo off
SetLocal EnableDelayedExpansion EnableExtensions
::Куст, в котором ищем
Set Hive=hkcu\software\myroutine
::Искомое имя параметра (опциональный фильтр)
::Set Param=NameServer
::Разделитель в значении параметра (начиная с него вся часть будет отрезана и перезаписана)
Set Delim=_
 
rem Получаем имена параметров куста (рекурсивный обход)
for /f "delims=" %%K in ('reg query "%Hive%" /s /f "*" /k ^| find "HKEY"') do (
  rem Получаем подробности: имя параметра/тип значения/значение
  for /f "delims=" %%V in ('reg query "%%K" /f "*" /d ^| find "REG"') do (
    rem 4 пробела заменяем на табуляцию
    set "key=%%V"& set "key=!key:    =	!"
    rem Парсим по знакам табуляции
    for /f "tokens=1-2* delims=	" %%N in ("!key!") do (
      Rem Здесь: %%N - имя параметра, %%O - тип значения, %%P - значение
      Rem Получаем фильтр имени параметра, если он задан
      if Defined Param (Set ParamFilter=%Param%) else (Set ParamFilter=%%N)
      Rem Применяем этот фильтр
      if "%%N"=="!ParamFilter!" (
        Rem Убеждаемся, что искомый разделитель есть в значении
        echo.%%P|>nul find "%Delim%"&& (
          Echo Found %%K %%P
          Rem Отрезаем часть - до разделителя
          for /f "tokens=1 delims=%Delim%" %%z in ("%%P") do (
            Echo Changing to %%z
            reg add "%%K" /v "%%N" /t %%O /d "%%z" /f
          )
        )
      )
    )
  )
)

pause

-------
Alex Dragokas

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

Отправлено: 21:30, 28-03-2013 | #5