![]() |
Вывод данных командой 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 Вывод осуществляется в текстовый файл. |
codi28, поясните — в чём состоит глубинный смысл сего действа? Поскольку в «reg.exe query» Вы и так указываете те самые раздел и параметр?
|
Смысл в том что параметр нужно искать в разделе HKEY_USERS и выводить то что нашлось в файл из которого потом будут браться пути реестра для удаления
Пример команды для поиска: REG QUERY HKU /S /F qifruvdfug > C:\FILE.TXT |
А не подскажете
:: Извлекаем из реестра полный путь к папке, содержащей профили пользователей 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 правильно работало? |
Код:
@echo off |
Спасибо, работает.
А не подскажете еще заодно, как присвоить переменной значение секции в 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 |
А зачем Вам там второй setlocal/endlocal?
|
Время: 01:50. |
Время: 01:50.
© OSzone.net 2001-