Компьютерный форум 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=223811)

baza450 26-12-2011 12:34 1822610

как извлечь все значения определенного ключа реестра из определенной ветки
 
Всем привет. Помогите создать BAT- фаил (или CMD). Задача такая: есть ветка реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall . В ее разделах храниться информация о установленных программах. В апплете appwiz.cpl отображается параметр ключа DisplayName.
Так вот, хочется из вышеуказанной ветки реестра извлечь в блокнот все значения параметра DisplayName.

El Sanchez 26-12-2011 17:35 1822841

baza450,
Код:

@Echo Off
Del /F /Q "%~dp0_Uninstall.log" 2>nul
For /F "Tokens=*" %%A In ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s^|Find /i "HKEY_"') Do (
        For /F "Tokens=2*" %%B In ('Reg Query "%%A" /v DisplayName 2^>nul^|Find /i "REG_SZ"') Do Echo:%%C>>"%~dp0_Uninstall.log"
)
Notepad "%~dp0_Uninstall.log"


baza450 26-12-2011 19:43 1822916

Спасибо) только увидел.... сейчас попробую...

baza450 26-12-2011 20:05 1822932

жесть) работает! Только русские шрифты корявенько отображаются, но это не упирается)

я тут немного добавил....это для х64 систем
Код:

@Echo Off
Del /F /Q "%~dp0_Uninstall.log" 2>nul
For /F "Tokens=*" %%A In ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s^|Find /i "HKEY_"') Do (
        For /F "Tokens=2*" %%B In ('Reg Query "%%A" /v DisplayName 2^>nul^|Find /i "REG_SZ"') Do Echo:%%C>>"%~dp0_Uninstall.log"
)
Notepad "%~dp0_Uninstall.log"
Del /F /Q "%~dp0_Uninstall.log" 2>nul
For /F "Tokens=*" %%A In ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s^|Find /i "HKEY_"') Do (
        For /F "Tokens=2*" %%B In ('Reg Query "%%A" /v DisplayName 2^>nul^|Find /i "REG_SZ"') Do Echo:%%C>>"%~dp0_Uninstall.log"
)
Notepad "%~dp0_Uninstall.log"

Вроде работает, вот только после завершения log сам открывается. Как сделать чтобы не открывался сам и сохранялся в нужную папку?
Заранее извиняюсь за "не грамотность" ... только недавно начал скриптами интересоваться...

baza450 26-12-2011 20:29 1822943

кстати, тоже самое по сети возможно? к примеру, чтобы собрать такую инфу по всем компам сети?

El Sanchez 26-12-2011 21:37 1822982

Цитата:

Цитата baza450
Только русские шрифты корявенько отображаются »

baza450, мильпардон, после @Echo Off следующей строкой допишите CHCP 1251 1>nul, в самом конце CHCP 866 1>nul

Цитата:

Цитата baza450
вот только после завершения log сам открывается »

baza450, дык, по заданию требовалось в Блокнот все передать. Если не надо, то строку Notepad "%~dp0_Uninstall.log" удалите.

Цитата:

Цитата baza450
Как сделать чтобы не открывался сам и сохранялся в нужную папку? »

baza450, в примере сохраняется рядом с батником в файл _Uninstall.log. Если надо в другое место, то вместо Echo:%%C>>"%~dp0_Uninstall.log" пишете, к примеру, Echo:%%C>>"C:\Temp\blablabla.log"

Цитата:

Цитата baza450
кстати, тоже самое по сети возможно? к примеру, чтобы собрать такую инфу по всем компам сети? »

baza450, читайте синтаксис Reg Query /?

baza450 27-12-2011 13:41 1823339

Спасибо!!!


Время: 16:01.

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