сохранить несколько веток реестра и добавить строчку в reg файл
Здравствуйте
подскажите, как сохранить две ветки реестра в один reg файл
но в начале файла еще добавить те же ветки с "-"
делаю так, но похоже, что 0.reg имеет не ту кодировку. слияние 0+1+2 не получается правильным
Код:
@echo off
echo Windows Registry Editor Version 5.00 >> 0.reg
echo [-HKEY_CURRENT_USER\Software\zzz1] >> 0.reg
echo [-HKEY_CURRENT_USER\Software\zzz2] >> 0.reg
reg export "HKEY_CURRENT_USER\Software\zzz1" "1.reg"
reg export "HKEY_CURRENT_USER\Software\zzz2" "2.reg"
copy "0.reg"+"1.reg"+"2.reg" "registry.reg"
del 0.reg
del 1.reg
del 2.reg
назначение файла registry.reg - загрузить сохранённые ветки реестра, но перед добавлением удалить прошлые, чтобы не осталось лишних ключей
|
Код:
@echo off
set "branch=HKEY_CURRENT_USER\Software\"
set "soft_1=zzz1"
set "soft_2=zzz2"
(
for %%i in (
"Windows Registry Editor Version 5.00"
""
"[-%branch%%soft_1%]"
""
"[-%branch%%soft_2%]"
""
) do (
echo.%%~i
)
)>"registry.reg"
for %%i in (
"%soft_1%"
"%soft_2%"
) do (
reg export "%branch%%%~i" .reg /y>nul
more +2<.reg>>"registry.reg"
)
del .reg
exit /b
|
Georgio спасибо ! получилось
|
а как можно сделать выгрузку мультиязычной?
по умолчанию вместо русских ключей кракозябры
если добавить chcp 1251, то русский язык (например путь до файла) будет хорошо выгружаться, а например какой-нибудь испанский тогда не будет выгружаться?
это же не совсем правильно, когда выгружается не в том виде, в котором оно в реестре
можно ли выгрузить ветки реестра с сохранением любого языка - будь то русский или франзуцский?
как показывает AkelPad, "чистая" команда "reg export" делает файл в 1200 кодировке (наделал в реестре разных языков для проверки)
в начало bat вставил chcp 1200, но это не помогло
|
Код:
@echo off
set "branch=HKEY_CURRENT_USER\Software\"
set "soft_1=zzz1"
set "soft_2=zzz2"
(
for %%i in (
"Windows Registry Editor Version 5.00"
""
"[-%branch%%soft_1%]"
""
"[-%branch%%soft_2%]"
""
) do (
cmd /u /c echo.%%~i
)
)>"registry.reg"
for %%i in (
"%soft_1%"
"%soft_2%"
) do (
reg export "%branch%%%~i" 1.reg /y
copy "registry.reg"+1.reg 2.reg>nul
)
move 2.reg "registry.reg">nul
del 1.reg
ping -n 3 localhost>nul
exit /b
|
Спасибо, вы мастер!
не выгружает первую ветку :)
-zzz1
-zzz2
zzz1 - нет в reg (вместо нее фраза Windows Registry Editor Version 5.00)
zzz2
|
shadowbat, Вы бы выложили для эксперимента оба Ваши раздела, и «HKEY_CURRENT_USER\Software\zzz1», и «HKEY_CURRENT_USER\Software\zzz2», упаковав их в архив.
|
Вложений: 1
архив с файлами
|
shadowbat, а так:
Код:
@echo off
set "branch=HKEY_CURRENT_USER\Software\"
set "soft_1=zzz1"
set "soft_2=zzz2"
(
for %%i in (
"Windows Registry Editor Version 5.00"
""
"[-%branch%%soft_1%]"
""
"[-%branch%%soft_2%]"
""
) do (
cmd /u /c echo.%%~i
)
)>"registry.reg"
for %%i in (
"%soft_1%"
"%soft_2%"
) do (
reg export "%branch%%%~i" 1.reg /y
copy "registry.reg"+1.reg 2.reg>nul
move 2.reg "registry.reg">nul
)
del 1.reg
ping -n 3 localhost>nul
exit /b
?
|
да, так отлично! 
|
тема никак не хочет нас отпускать
выгрузилось отлично
а при загрузке:
если на файл нажать "изменить" и после того как он откроется в блокноте "сохранить" - данные успешно добавляются в реестр
пересохраненный и исходный файлы отличаются на два первых байта.
(слева реестр, справа файл сделанный через bat)

|
echo . >>registry.reg
добавляет неопознанный знак в файл reg, но он все равно не загружается в реестр через открытие мышкой
akelpad показывает *BOM у "неправильного" reg файла

у правильных reg файлов *BOM не стоит
как бы его вылечить
---
вот костыль. работает, хотя очень не по людски
открыть-закрыть-сохранить через блокнот
добавить в bat в конце
Код:
@echo off
start /d C:\Windows\System32\ notepad.exe %CD%\registry.reg
echo With CreateObject("WScript.Shell"):.AppActivate "Блокнот":.SendKeys "^S":End With > "C:\S.vbs"
cscript "C:\S.vbs"
del "C:\S.vbs"
echo With CreateObject("WScript.Shell"):.AppActivate "Блокнот":.SendKeys "%%{F4}":End With > "C:\f4.vbs"
cscript "C:\f4.vbs"
del "C:\f4.vbs"
может есть попроще решение?
тут даже ключ start /min не проходит. получается блокнотом сверкает
|
Цитата:
Цитата shadowbat
тема никак не хочет нас отпускать »
|
shadowbat, "обманул" несовпадение кодировок, получилось, по-моему, коротко и действенно:
Код:
@echo off
set "branch=HKEY_CURRENT_USER\Software\"
set "soft_1=111"
set "soft_2=222"
reg add "%branch%$$$" /f>nul
reg export "%branch%$$$" "registry.reg" /y>nul
reg delete "%branch%$$$" /f>nul
(
for %%i in (
"[-%branch%$$$]"
""
"[-%branch%%soft_1%]"
""
"[-%branch%%soft_2%]"
""
) do (
cmd /u /c echo.%%~i
)
)>>"registry.reg"
for %%i in (
"%soft_1%"
"%soft_2%"
) do (
reg export "%branch%%%~i" 1.reg /y
copy "registry.reg"+1.reg 2.reg>nul
move 2.reg "registry.reg">nul
)
del 1.reg
ping -n 3 localhost>nul
exit /b
.
|
Цитата:
по-моему, коротко и действенно
|
конечно коротко! по сравнению с моими то выкрутасами
спасибо! Вы очень помогли
|
Цитата:
Цитата shadowbat
у правильных reg файлов *BOM не стоит »
|
Как раз таки у правильных — «стоит».
|
Время: 20:54.
© OSzone.net 2001-