Чтение данных из реестра в переменную окружения
Продвинутый кросплатформенный модуль для встраивания в скрипты, позволяющий в удобной форме получать данные из реестра для дальнейшего использования(как всегда - кодировка скрипта CP866):
@ECHO OFF CLS :: 1-й параметр = раздел реестра для чтения :: 2-й параметр = имя считываемого параметра - указать пустые кавычки для чтения параметра "По умолчанию" :: 3-й параметр = имя переменной окружения куда считываем результат :: Пример чтения именованного параметра: CALL :REG_READ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" "USERINIT" "MY_VAR1" ECHO Именованный параметр значение "%MY_VAR1%" ECHO Именованный параметр тип "%MY_VAR1_TYPE%" :: Пример чтения безымянного параметра "По умолчанию" CALL :REG_READ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" "" "MY_VAR2" ECHO Параметр "По умолчанию" значение "%MY_VAR2%" ECHO Параметр "По умолчанию" тип "%MY_VAR2_TYPE%" GOTO :EOF :REG_READ IF NOT "%~2"=="" ( FOR /F "USEBACKQ TOKENS=* DELIMS=" %%a IN (`REG QUERY "%~1" /v "%~2" 2^>NUL ^|FINDSTR /I /B /C:" %~2" 2^>NUL`) DO CALL :TRANSLATE "%%a" "%~2" "%~3" 1>NUL 2>&1 REG QUERY "%~1" /v "%~2"||(SET "%~3_TYPE="&SET "%~3=!") ) IF "%~2"=="" ( FOR /F "USEBACKQ TOKENS=* DELIMS=" %%a IN (`REG QUERY "%~1" /ve 2^>NUL ^|FINDSTR /B /C:" " 2^>NUL`) DO CALL :TRANSLATE "%%a" "" "%~3" 1>NUL 2>&1 REG QUERY "%~1" /ve||(SET "%~3_TYPE="&SET "%~3=!") ) CALL SET "%~3=%%%~3:~0,-1%%" GOTO :EOF :TRANSLATE SET "TEMP_STR=%~1" IF NOT "%~2"=="" CALL SET "TEMP_STR=%%TEMP_STR:*%~2=%%" CALL SET "TEMP_STR=%%TEMP_STR:*REG_=%%" FOR /F "USEBACKQ TOKENS=1*" %%a IN ('"%TEMP_STR%"') DO ( SET "%~3_TYPE=REG_%%~a" SET "%~3=%%~b" ) GOTO :EOF
Добавлена возможность чтения из реестра параметра "По-умолчанию".
Проверена работа на WinXP, Win7, Win7x64.
Не учитывается ненативный запуск - то есть если на x64 вызвать cmd-скрипт из x86-окружения то подмена HKLM\SOFTWARE\ на HKLM\SOFTWARE\Wow6432Node\ произойдет без вашего желания. Прямой же запуск скрипта ВСЕГДА отрабатывает в нативном окружении.
ЗЫ - Что делать с "(значение параметра не задано)" на системах Win7(судя по всему Vista и старше) для пустого параметра "По умолчанию" я пока в универсальном виде не придумал. Такое значение автоматически присваивается неописанному пустому параметру и, к сожалению, оно зависимо от языка системы.
Вложение | Размер |
---|---|
chtenie_parametra_iz_reestra_v_peremennuyu_okruzheniya_v3.7z | 843 байта |
- Блог пользователя yurkesha
- Версия для печати
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Похожие материалы по этой теме на сайте
Содержимое | |
---|---|
Интерпретатор CMD - вывод переменных со спецсимволами на экран и в файл |
Известная, но слабоосвещенная тема - обработка в коммандном интерпретаторе CMD данных со спецсимволами. |
Скрипты для CMD |
Скрипты выполняемые интерпретатором CMD.EXE - стандартной консольной оболочкой для Win2000/WinXP/Vista/Seven/Win8/Win2000 Server/Win2003/Win2008. |
Страховое копирование по списку |
Относительно простой вариант резервного копирования по списку файлов/папок с учетом типа резервной копии и количества хранимых копий по типам. Классические типы: дневная-недельная-месячная-годовая копии. Кодировка скрипта CP866.... |
Преобразование файлов 1CClientBankExchange в табличную форму |
Лично мне периодически приходилось сталкиваться с обработкой данных не в табличной форме, а в "именованном формате" то есть когда каждый параметр пишется на отдельной строке в виде Параметр=Значение параметра причем файл... |
Выключение компьютеров в домене по списку |
Монолитный скрипт выключения компьютеров в домене по списку:
@ECHO OFF SET "BEGIN_MARKER=:ENDFILE1" SET "END_MARKER=:ENDFILE2" |
Логофф сессий отключенных пользователей на терминальном сервере |
Убить все отключенные сессии: @ECHO OFF FOR /F "USEBACKQ TOKENS=2 DELIMS= " %%a IN (`quser^|findstr /b /v "^>"^|findstr /i /v " ID "^|findstr /v /i "rdp-tcp"`) DO logoff %%~a EXIT 0 |
Настраиваемые представления журналов Windows |
Через журналы Windows можно помотреть много чего интересного.
Но есть нюанс - самое интересное обычно сидит в расширенных атрибутах и фильтр по ним через GUI создать невозможно.
|
Поддержка папок для сканирования |
Часто в офисе присутствуют сетевые устройства сканирования, которые поддерживают сканирование в сетевую папку. Все бы было хорошо если бы для этих устройств |
Сейчас на сайте
1 пользователь онлайн.
- gerrockz
Популярное сегодня
Пользователи
- gerrockz
- PaulineFag
- ale_x
- Arti100
- goldenwing
- Nomae
- niggs
- Xazrktv
- neal83
- Platokom
Комментарии
Так - одной правки
Так - одной правки недостаточно - при чтении параметра с именем содержащим пробел выходит лажа...
Дорабатываю...
---
упс..
Да оказывается еще и с
Да оказывается еще и с параметром "По-умолчанию" не все так просто если работать на Win7 и старше...
---
упс..
Третий вариант скрипта - уже
Третий вариант скрипта - уже далеко не простой, но вроде корректный.
---
упс..
Страницы