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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Вывод данных командой REG QUERY (http://forum.oszone.net/showthread.php?t=296946)

codi28 15-03-2015 15:07 2482973

Вывод данных командой REG QUERY
 
Здравствуйте.
Возможно ли сделать так что бы результатом работы команды REG QUERY был только полный адрес раздела и параметр, без типа и значения.
Пример:
Что выводится:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager
ColorName REG_SZ NormalColor
Что нужно:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager
ColorName
Вывод осуществляется в текстовый файл.

Iska 15-03-2015 16:51 2483024

codi28, поясните — в чём состоит глубинный смысл сего действа? Поскольку в «reg.exe query» Вы и так указываете те самые раздел и параметр?

codi28 16-03-2015 16:24 2483398

Смысл в том что параметр нужно искать в разделе HKEY_USERS и выводить то что нашлось в файл из которого потом будут браться пути реестра для удаления
Пример команды для поиска: REG QUERY HKU /S /F qifruvdfug > C:\FILE.TXT

mariolast 19-03-2015 17:12 2484790

А не подскажете

:: Извлекаем из реестра полный путь к папке, содержащей профили пользователей
for /f "usebackq tokens=3,3* delims== " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i

На 7-ке нормально считывает, а на XP только слово settings считывается. Что поменять, чтобы и на 7 и на XP правильно работало?

Iska 19-03-2015 17:31 2484798

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2* delims=        " %%i in (
        `reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v "ProfilesDirectory"`
) do set sProfilesDirectory=%%j

echo [%sProfilesDirectory%]

endlocal
exit /b 0


mariolast 19-03-2015 18:03 2484807

Спасибо, работает.
А не подскажете еще заодно, как присвоить переменной значение секции в INI файле?
Читать то он читает и на экран выводит.
Попытался сделать так, но не получилось, за пределами локали переменная %ini.Value% уничтожается.
Соответственно %PASS% пустое.

echo off
setlocal enableextensions enabledelayedexpansion
set inifile=profiles.ini

SetLocal
call :ini.ReadKey "%inifile%" "[Profile0]" 1 PATH 1
echo. ini.Value!
endlocal&set PASS=%ini.Value%
echo %PASS%
pause
)

exit /b 0

:ini.ReadKey
::%1 - путь к файлу
::%2 - имя секции
::%3 - порядковый номер секции (если имеются одноименные), иначе указывайте 1
::%4 - имя параметра
::%5 - порядковый номер параметра (если имеются одноименные), иначе указывайте 1
for /f "UseBackQ delims=" %%s in ("%~1") do (
if Defined BeginRead (
for /f "tokens=1* delims==" %%k in ("%%s") do (
set ini.Key.Name=%%k
call :TrimSpaces "!ini.Key.Name!" " " "ini.Key.Name"
if /i "!ini.Key.Name!"=="%~4" (
Set /A ini.Keys.Count+=1
if !ini.Keys.Count!==%~5 (
Set ini.Value=%%l
call :TrimSpaces "!ini.Value!" " " "ini.Value"
Exit /B
)
)
)
) else (
set ini.Section.Name=%%s
call :TrimSpaces "!ini.Section.Name!" " " "ini.Section.Name"
if /i "!ini.Section.Name!"=="%~2" (
set /A ini.Sections.Count+=1
if !ini.Sections.Count!==%~3 (
Set BeginRead=true
)
)
)
)
Exit /B

Iska 20-03-2015 00:26 2484953

А зачем Вам там второй setlocal/endlocal?


Время: 01:50.

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