Страницы

Поиск по вопросам

пятница, 21 июня 2019 г.

Как найти и экспортировать ветки реестра содержащие определенное значение в ключах?

В общем нужно перенести с одного реестра на одном ПК в другой реестр другого ПК такие ветки, которые содержат определенное слово или фразу или предложение и т.д.
Например по фразе "Рамамбахарамамбуру" находит ветку
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Patches\1CB0F51845E7C003A9AC9C64F0FDF687\SourceList\Net
и еще пару-тройку сотен.
Что как и чем сделать так, чтоб можно было эти ветки экспортировать, а на другом ПК импортировать одним файлом?
Нашел программу reg organizer - можно осуществить поиск, высвечиваются все ветки:

но, к сожалению, их можно только удалить)))
Есть ли какие-то такие супер программы с поиском и экспортом конкретных веток? Или как чем такое вообще можно провернуть? Что использовать?


Ответ

Поскребя в интернете по мануалам команд батника сделал такую программку:
@echo OFF
set counter=0 setlocal enableextensions enableDelayedExpansion
set TEMP_FOLDER_DIR=%temp%
egParts set SECTION_LIST=(HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG)
if [%1]==[] (set KEY_NAME=HKLM\SOFTWARE\Classes\Applications) else (set KEY_NAME=%1) if [%2]==[] (set VALUE_NAME="Internet Explorer") else (set VALUE_NAME=%2) if [%3]==[] (set TMP_EXPORT=%TEMP_FOLDER_DIR%) else (set TMP_EXPORT=%3) if [%4]==[] (set DEST_MEEGED_FILE=%userprofile%\desktop) else (set DEST_MEEGED_FILE=%4)
if not exist %TEMP_FOLDER_DIR% mkdir "%TEMP_FOLDER_DIR%"
for /f "usebackq skip=1 tokens=1-2*" %%a in (`reg query %KEY_NAME% /f %VALUE_NAME% /s 2^>nul`) do ( set ValueName=%%a set ValueType=%%b set ValueValue=%%c
set TRUE=
if defined ValueName ( FOR %%G IN %SECTION_LIST% DO ( if not "!ValueName!"=="!ValueName:%%G=!" ( set TRUE=1 ) )
if defined TRUE ( set /a counter=counter+1 echo !counter! - !ValueName! c:\Windows\SysWOW64
eg.exe export !ValueName! "%TMP_EXPORT%\test!counter!.reg" ) ) )
copy /b "%TMP_EXPORT%\*.reg" "%DEST_MEEGED_FILE%\mergedFile.reg" rmdir %TEMP_FOLDER_DIR% /s /q
endlocal pause
где можно передать входные параметры:
1 - раздел где ищем 2 - значение, которое ищем 3 - временная папка для всех найденных веток 4 - финальная папка, где будет хранится общий файл со всеми слитыми кусками usebackq - возможность командного исполнения того, что заключено в обратные кавычки tokens - Задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. В результате "tokens=1-2*" мы получаем название ключа, тип и значение ключа в ветке итерации
По умолчанию при отсутствии какого либо параметра ищет в HKLM\SOFTWARE\Classes\Applications (HKLM - HKEY_LOCAL_MACHINE), строку Internet Explorer, складирует куски в temp директорию, а окончательный результат кладет на рабочий стол

Комментариев нет:

Отправить комментарий