Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вытащить значение из реестра и вставить его в переменную

Ответить
Настройки темы
CMD/BAT - [решено] Вытащить значение из реестра и вставить его в переменную

Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


Изменения
Автор: root221
Дата: 27-02-2012
Здравствуйте,

Задача такая

нужно вытащить значение из куста реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon а там то что вбито в параметре shell нужно вставить в переменную и выввести в консоль.

Отправлено: 21:37, 26-02-2012

 


Moderator


Сообщения: 53170
Благодарности: 15429

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V Shell') Do Set Shell=%%J
Echo Значение Shell в реестре - %Shell%
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:50, 26-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


Petya V4sechkin,
спасибо то что нужно.

Отправлено: 22:17, 26-02-2012 | #3


Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


а как сделать проверку, есть ли в этой ветке ключа shell нету, тогда ставим паузу, а если ключ существует тогда выводим в консоль значение присвоенное этому ключу %shell%

Последний раз редактировалось root221, 27-02-2012 в 07:45.


Отправлено: 04:03, 27-02-2012 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Например, просто проверяя после запроса существование результирующей переменной окружения посредством «if defined …»:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
set sParameter=Shell

for /f "tokens=3" %%i in (
	'2^>nul reg.exe query "%sKey%" /v "%sParameter%"^|find.exe /i "%sParameter%"'
) do set sShell=%%i

if defined sShell (
	echo [%sShell%]
) else (
	echo Not found parameter [%sParameter%] in [%sKey%]
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:45, 27-02-2012 | #5


Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


Iska,

Спасибо всё работает.

Отправлено: 07:57, 27-02-2012 | #6


Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


ППЦ, Что за фигня....
Код: Выделить весь код
if defined DevID (
	call :start
) else (
	color 0C
	echo Not found parameter [ %sParameter% ] in [ %sKey% ]
)
endlocal
pause >nul
exit /b 0
Из за этой проверки не работает %~n0.vbs когда компилирую через Quick Batch File Compiler, во время вызова пишет мол файл не был наиден и действительно прописывается не имя батника а какоето рандомное.

да кстати

и из за моей тоже...

и вот она

Код: Выделить весь код
Reg Query "%sKey%" /V "%sParameter%"
if %ErrorLevel%==0 (
       call :start
)      Else   (
       echo Not found parameter [%sParameter%] in [%sKey%]
)
если не компилировать а просто запустить, скажем так исходник моей программы через bat, тогда всё нормально...

мм думал из-за %~n0.vbs переименовал в file.vbs и тоже самое...

Отправлено: 08:18, 27-02-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


root221, проблема с переменной «%0» в Quick Batch File Compiler (и не только в нём) известная.

Что-то недавно было на эту тему. Попробуйте посмотреть здесь: CMD/BAT - [решено] При конверте .bat в .exe не работают переменные.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:31, 27-02-2012 | #8


Аватара для root221

Старожил


Сообщения: 177
Благодарности: 13

Профиль | Отправить PM | Цитировать


в общем пришлось сделать вот так %systemroot%\temp и всё заработало.

Отправлено: 08:57, 27-02-2012 | #9


Пользователь


Сообщения: 121
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Petya V4sechkin:
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V Shell') Do Set Shell=%%J »
Как быть, если вместо программы Reg.exe необходимо использовать программу, полный путь которой содержит пробелы?

Отправлено: 10:36, 15-07-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вытащить значение из реестра и вставить его в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
CMD/BAT - [решено] Как вытащить путь из реестра и подставить его в нужное место? HuppeR Скриптовые языки администрирования Windows 15 15-10-2011 07:11
CMD/BAT - [решено] Новое значение, в новую переменную Devils0411 Скриптовые языки администрирования Windows 1 12-10-2010 00:52
как бы добавить в переменные имя ключа реестра и его значение ? mitiya Программирование и базы данных 21 23-04-2008 11:54
Как узнать переменную которой передается значение?? FADE Вебмастеру 2 30-06-2004 18:45




 
Переход