Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сборка регфайла и фильтрация... (http://forum.oszone.net/showthread.php?t=163826)

semiono 17-01-2010 22:52 1323029

Сборка регфайла и фильтрация...
 
Пример:
reg export HKLM\Software\Native Instruments\AkoustikPiano C:\new1.reg
reg export HKCU\Software\Native Instruments\AkoustikPiano C:\new2.reg

файлы будут содержать всякое разное...

Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano]
"ContentVersion"="C++"
"InstallDir"="C:\\I\\system32\\Pro\\AkoustikPiano"
"UserName"="Semiono"
"SNO"="17287-50778-51179-43449-85138"
"SYSTEMID"="8981711871480501873439118040718514007018"
"KEY"="804907001001040891145018901440104841094044400400711711198448"

[HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano\searches]

Из двух этих файлов надо собрать только полезное....

Скажем только:

Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Native Instruments\AkoustikPiano]
"ContentDir"="D:\\01\\"

[HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano]
"InstallDir"="C:\\I\\system32\\Pro\\AkoustikPiano"

Нужен батник вообщем.

Пожалуйста, покажите разные способы чтобы выбрать более лаконичное решение,
я знаю наверное вариант не один будет! :)
---

Если есть необходимость использовать утилиты не входящие в WinXP, это нормально,
но только одиночные бинарики, а не PowerShell и т.п. так как нужна возможность переноса
этого на разные компьютеры...

Вот, кстати, reg2Inf.exe даже без dotnetfx не работат, что не есть хорошо...
Кстати, если есть вариант получить INI файл вместо reg в моём примере, я бы тоже такое хотел! ??

Vadikan 21-01-2010 02:00 1325627

Цитата:

Цитата semiono
Из двух этих файлов надо собрать только полезное.... »

IF EXIST полезное...

А кто его определять будет, искусственный интеллект на базе командного интерпретатора? :)

skyfish 21-01-2010 03:34 1325668

Если критерий полезности вы сможете выразить регулярным выражением (вам, вроде, пути нужны) — то grep всё сделает.

semiono 21-01-2010 04:55 1325681

Полезное я показал в примере! Всмысле я всегда заню имена параметров до экспорта, но не знаю их значения. То-есть имена можно задать явно.

Мне amel27 подсказал гениальное решение!
Может я его не точно понял, но примерно вот что вышло у меня...

Код:

@reg copy HKLM\Software\Microsoft\Windows\CurrentVersion\Setup HKLM\Software\$DEBUG\$1 /s /f

@reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\BaseWinOptions" /f
@reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\ExceptionComponents" /f
@reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\Oc Manager" /f
@reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OptionalComponents" /f

@reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Setup /v BootDir /f
@reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Setup /v CDInstall /f
@reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Setup /v PrivateHash /f

@reg export HKLM\Software\Microsoft\Windows\CurrentVersion\Setup C:\example.reg
@reg copy HKLM\Software\$DEBUG\$1 HKLM\Software\Microsoft\Windows\CurrentVersion\Setup /s /f
@reg delete HKLM\Software\$DEBUG /f

... а вот кстати сейчас читаю его заново, он имел вввиду сам заголовок ключа восстановить регфайлом,
forum.oszone.ru/post-1325106-3.html значит я точно не то зделал, хотя у меня тоже работает :)

Но у меня такой вопрос тогда, как это всё инвертировать можно? Всмысле ненужного обычно болше
бывает, гораздо чаще проще было б задать нужное и остальное удалить.

Наверное так IF EXIST :) Но я в батниках не шарю, пожалуйста покажите как логику выстроить?

ЗЫ Я думаю это не столь опасно временно удалять ключи реестра,
если конечно ошибок нет и они будут восстановленны до перезагрузки? :)
Впрочем мне на практике системные записи вряд ли нужны, дело касается только software\

semiono 21-01-2010 18:40 1326267

Ребят, можно ли как-то в батнике застолбить переменные, чтоб они исключениями стали, всёравно в чём,
хоть в поиске файлов хоть где угодно. Хотя я думаю, что это невозможно. :(
Жаль считай всё готово, толькоб эту проблему осталось разрешить...
Хотя я опять с ужасом вспомнил, что всё это упирается опять же в reg.exe, который опять же не поймёт конкретный ввод даже если бы получилось. Ну хотя бы так получить исключения, я бы ещё подумал потом, что с этим делать далее :) ...

что IF EXIST ContentDir NEXT... чтоли?

amel27 23-01-2010 05:12 1327496

Цитата:

Цитата semiono
Но у меня такой вопрос тогда, как это всё инвертировать можно? Всмысле ненужного обычно болше бывает, гораздо чаще проще было б задать нужное и остальное удалить. »

теоретически, это можно сделать и средствами одного REG.EXE, но очевидные баги и вольности в формате выходных данных сводят на нет всю его функциональность... поэтому ИМХО практичней дополнить его альтернативными решениями (WSH, сторонние утилиты), чем извращаться с парсингом вывода REG.EXE

Цитата:

Цитата semiono
можно ли как-то в батнике застолбить переменные, чтоб они исключениями стали, всёравно в чём »

а теперь то же самое, но по-русски...

semiono 23-01-2010 05:55 1327505

Цитата:

Цитата amel27
а теперь то же самое, но по-русски... »

Ну это то же самое другими словами :)
Как бы так
set var1 = "InstallDir"
set var2 = "Content Dir"
reg delete la-la-la ... кроме var1, var2

Но верно, лучше
Цитата:

Цитата amel27
альтернативными решениями (WSH, сторонние утилиты) »

другими решениями заняться.
я более ставку сейчас делаю на inf файл, помоги переделать (RegSave) скрипт? ...


Время: 01:46.

Время: 01:46.
© OSzone.net 2001-