Войти

Показать полную графическую версию : [решено] сохранить несколько веток реестра и добавить строчку в reg файл


shadowbat
20-08-2014, 17:35
Здравствуйте
подскажите, как сохранить две ветки реестра в один 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 - загрузить сохранённые ветки реестра, но перед добавлением удалить прошлые, чтобы не осталось лишних ключей

Georgio
20-08-2014, 20:10
@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

shadowbat
20-08-2014, 20:21
Georgio спасибо ! получилось

shadowbat
21-08-2014, 12:17
а как можно сделать выгрузку мультиязычной?
по умолчанию вместо русских ключей кракозябры
если добавить chcp 1251, то русский язык (например путь до файла) будет хорошо выгружаться, а например какой-нибудь испанский тогда не будет выгружаться?
это же не совсем правильно, когда выгружается не в том виде, в котором оно в реестре
можно ли выгрузить ветки реестра с сохранением любого языка - будь то русский или франзуцский?

как показывает AkelPad, "чистая" команда "reg export" делает файл в 1200 кодировке (наделал в реестре разных языков для проверки)
в начало bat вставил chcp 1200, но это не помогло

Georgio
21-08-2014, 13:08
@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

shadowbat
21-08-2014, 13:33
Спасибо, вы мастер!

не выгружает первую ветку :)
-zzz1
-zzz2
zzz1 - нет в reg (вместо нее фраза Windows Registry Editor Version 5.00)
zzz2

Iska
21-08-2014, 13:51
shadowbat, Вы бы выложили для эксперимента оба Ваши раздела, и «HKEY_CURRENT_USER\Software\zzz1», и «HKEY_CURRENT_USER\Software\zzz2», упаковав их в архив.

shadowbat
21-08-2014, 13:56
архив с файлами

Georgio
21-08-2014, 14:04
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


?

shadowbat
21-08-2014, 14:14
да, так отлично! http://s009.radikal.ru/i308/1408/e7/9644783c5ca2.gif

shadowbat
21-08-2014, 14:54
тема никак не хочет нас отпускать

выгрузилось отлично
а при загрузке:

http://s58.radikal.ru/i160/1408/f3/ecfade868b48.png

если на файл нажать "изменить" и после того как он откроется в блокноте "сохранить" - данные успешно добавляются в реестр

пересохраненный и исходный файлы отличаются на два первых байта.
(слева реестр, справа файл сделанный через bat)
http://i004.radikal.ru/1408/01/b600f9cfc9det.jpg (http://i004.radikal.ru/1408/01/b600f9cfc9de.png)

shadowbat
21-08-2014, 18:09
echo . >>registry.reg
добавляет неопознанный знак в файл reg, но он все равно не загружается в реестр через открытие мышкой
akelpad показывает *BOM у "неправильного" reg файла
http://s020.radikal.ru/i723/1408/4a/8664af92f521.png
у правильных 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 не проходит. получается блокнотом сверкает

Georgio
21-08-2014, 19:36
тема никак не хочет нас отпускать »



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
21-08-2014, 19:56
по-моему, коротко и действенно
конечно коротко! по сравнению с моими то выкрутасами
спасибо! Вы очень помогли

Iska
21-08-2014, 21:59
у правильных reg файлов *BOM не стоит »
Как раз таки у правильных — «стоит».




© OSzone.net 2001-2012