|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проблема с переходом к определенному ключу реестра |
|
CMD/BAT - [решено] Проблема с переходом к определенному ключу реестра
|
Новый участник Сообщения: 24 |
Профиль | Отправить PM | Цитировать Всем доброго времени суток в которое Вы читаете данный пост!
http://forum.oszone.net/thread-184844.html здесь я нашел код для записи значения из реестра в .txt файл. For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Binary Fortress Software\DisplayFusion\Wallpaper"^|Find /I "Wallpaper_0_FileName"`) Do Echo %%J>text.txt HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO\{1A3EB677-F210-43AE-85B9-C6964FF59BF6}\0000 Мне нужно, чтобы вместо {1A3EB677-F210-43AE-85B9-C6964FF59BF6} батник просто проходил в первый подраздел раздела VIDEO, поскольку на разных компьютерах эти идентификаторы будут разные, а мне нужно, чтобы файл работал на всех компах с Win7. Помогите, пожалуйста! |
|
Отправлено: 17:13, 25-05-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать VoinLuny, например, так:
@echo off setlocal enableextensions enabledelayedexpansion set sPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO for /f "delims=" %%i in ('reg.exe query "%sPath%" ^| find.exe "{"') do ( reg.exe query "%%i" goto :Teminate ) :Teminate endlocal exit /b 0 |
Последний раз редактировалось Iska, 25-05-2012 в 22:31. Причина: Исправлена тупая описка Отправлено: 21:26, 25-05-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Iska, благодарю за решение, а можно попросить комментарии? Просто я не совсем понимаю принцип работы оператора FOR даже читая мануал по нему, хотелось бы человеческим языком, чтобы понять, что пишу. Заранее спасибо!
|
Отправлено: 21:32, 25-05-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 1. Исполняется команда:
2. Вывод команды «reg.exe» передаётся по конвейеру («|») на вход команды: которая фильтрует полученный текст, оставляя только строки, в которых содержится указанный символ («{»). 3. Вывод команды «find.exe» передаётся на построчный разбор команде «for /f»: * чтобы указать, что мы разбираем именно вывод команды, а не содержимое файла, внутри скобок мы используем апострофы («'…'»), внутри которых мы указываем саму команду (в данном случае — несколько команд, объединённых конвейером); * чтобы символ конвейера был отнесён интерпретатором не к самой команде «for /f», а к указанным для исполнения командам, мы его экранируем символом «^»; * дабы строки воспринимались цельной лексемой — мы указываем атрибутом «delims» отсутствие разделителей лексем [только сейчас увидел и поправил в предыдущем коде свою очередную тупую описку — двойной знак равенства при атрибуте «delims»]. 4. Результаты разбора будут доступны внутри цикла разбора «for /f» через указанную переменную «%%i». 5. После разбора первой же строки мы безусловно переходим на указанную метку «:Teminate», тем самым обрывая разбор. |
Отправлено: 22:36, 25-05-2012 | #4 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Iska, объяснил доступно, спасибо!
Последний момент: Когда я выполнил код который ты скинул - реестр открылся в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO\{1A3EB677-F210-43AE-85B9-C6964FF59BF6}\0000, но я не заметил в твоем коде упоминания последнего подраздела (0000). Как так? |
|
Отправлено: 00:37, 26-05-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 02:13, 26-05-2012 | #6 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Всё понял, огромное спасибо!!!
|
Отправлено: 02:52, 26-05-2012 | #7 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать При выполнении скрипта появляется непонятный раздел (его нет в реестре) и соответственно, ошибка. Полтергейст какой-то. Поясните, что за раздел и как убрать сообщение об ошибке.
Windows XP SP3 , Office 2003 @ECHO OFF setlocal enableextensions enabledelayedexpansion SET UNISTALL=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\9140110900063D11C8EF10054038389C\Patches FOR /f "tokens=12 delims=\" %%a IN ('reg query "%UNISTALL%"') DO ( FOR /f "tokens=1,2,3" %%b IN ('reg query "%UNISTALL%\%%a" ^| FIND /I "MoreInfoURL"') DO ( FOR /f "tokens=4 delims=/" %%c IN ("%%d") DO ( set "Upd=%%c" ECHO KB!Upd! ))) pause exit |
Последний раз редактировалось sov44, 28-05-2012 в 13:56. Отправлено: 12:55, 28-05-2012 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
FreeBSD - Авторизация root по ключу | tehnik_srs | Общий по FreeBSD | 0 | 10-12-2011 17:35 | |
[решено] Проблема с переходом монитора в полноэкранный режим | viktor112007 | Непонятные проблемы с Железом | 6 | 12-05-2010 00:28 | |
Доступ - [решено] Ошибка при доступе к ключу реестра и RegDelNull.exe | Artell | Microsoft Windows 2000/XP | 2 | 20-01-2010 13:05 | |
Проблема с переходом на win2003 c win2000 (DHCP) | SOFAT | Microsoft Windows NT/2000/2003 | 2 | 31-10-2006 14:28 | |
C переходом на летнее время | ruslandh | О сайте и форуме | 9 | 07-04-2002 08:29 |
|