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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.?

Новый участник


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


Конфигурация

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


Изменения
Автор: Dark Ange1
Дата: 08-10-2010
Доброе время суток!

Подскажите пожалуйста, как получить ТОЛЬКО значение одного параметра из реестра и скопировать его в буфер обмена и/или в текстовый файл?
Например, мне нужно скопировать и записать в текстовый файл(с перезаписью) значение параметра dword Wallpaper_0_FileName из пути реестра HKEY_CURRENT_USER\Software\Binary Fortress Software\DisplayFusion\Wallpaper

Отправлено: 14:35, 07-09-2010

 

Ветеран


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

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


Цитата Iska:
У Вас ещё есть где-то NT 4.0?! »
Нет.
Просто нужна универсальность, чтобы одно и тоже работало как можно на большем количестве версий Windows

Цитата Iska:
Можете попробовать использовать напрямую в пакетных файлах посредством «mshta.exe» в виде: »
А нельзя ли в пакетный файл вложить как-то только одну эту строку:
Скрытый текст
Код: Выделить весь код
WScript.Echo WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")

Просто чем больше строк, чем больше зависимостей - тем хуже.
Вот я поэтому искал способ, чтобы только средствами cmd обойтись, чтобы не тащить vbs, wsh скрипты...

Отправлено: 21:42, 24-01-2015 | #21



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

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


Ветеран


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

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


Цитата SharkyEXE:
А нельзя ли в пакетный файл вложить как-то только одну эту строку: »
Можно. Именно эта строка и «вложена» в пакетный файл во втором коде (только не на VBScript, а на JScript) из моего предыдущего поста. Могу повторить:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
	`@"%systemroot%\system32\mshta.exe" "javascript:try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(new ActiveXObject('WScript.Shell').RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProductName'))};catch (e){};close();"`
) do set sProductName=%%i

if defined sProductName (
	echo [%sProductName%]
) else (
	echo Can't find [ProductName] parameter in [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion].
)

endlocal
exit /b 0
Весь остальной «обвес» предназначен для запуска «mshta.exe» с передачей ему кода из его командной сроки, разбора полученного вывода от «mshta.exe» посредством «for /f», определения успешности исполнения кода в «mshta.exe» и вывода полученного результата. «Тащить» дополнительно ничего не надо. Никаких внешних зависимостей нет.

Цитата SharkyEXE:
Просто нужна универсальность, чтобы одно и тоже работало как можно на большем количестве версий Windows »
Тогда нужно забыть про пакетные файлы и пользовать исключительно WSH.

Отправлено: 05:32, 25-01-2015 | #22


Ветеран


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

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


Цитата Iska:
«Тащить» дополнительно ничего не надо. Никаких внешних зависимостей нет. »
Да нет, есть гемморой, что это не заработает, так как Вы мне писали
Скрытый текст
Цитата Iska:
но могут быть проблемы в новых ОС в случае, если там были заблокированы использованные объекты Automation в IE для зоны Локальный компьютер — это проверяйте на практике. »
Одним словом пусть будет так, как Вы скажите, хотя, кончено, очень бы хотелось только средствами cmd реализовать, но для этого надо, походу дела, в Windows 2000 положить файл reg.exe

Отправлено: 09:41, 25-01-2015 | #23


Ветеран


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

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


SharkyEXE, я написал «могут быть». Но это не значит, что «обязательно будут». Ваше дело проверить и отписаться по результатам.

Отправлено: 10:41, 25-01-2015 | #24


Ветеран


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

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


Цитата Iska:
SharkyEXE, я написал «могут быть». Но это не значит, что «обязательно будут». Ваше дело проверить и отписаться по результатам. »
Большое Вам спасибо за помощь, за готовый рабочий пример, но поймите меня, пожалуйста, правильно, хочется готовую конфетку - запустил на любой ОС и получил результат.

Если на какой-либо ОС что-то не сработает из-за каких-то ограничений mshta.exe - у меня нет желания и времени разбираться, почему не сработало на какой-либо ОС, лезть в настройки IE и снижать уровень безопасности и прочее

Поэтому мне проще отказаться от того, что я хотел, буду пользоваться выводом команды ver

Последний раз редактировалось SharkyEXE, 26-01-2015 в 07:52.


Отправлено: 07:34, 26-01-2015 | #25


Ветеран


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

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


SharkyEXE, поймите и меня правильно: это требуется Вам, но Вы не хотите даже просто проверить работоспособность. У меня в этом случае тем более не возникнет желания проделывать данную работу — искать, загружать, устанавливать разнообразные ОС и проверять под ними пакетный файл — вместо Вас.

Отправлено: 07:58, 26-01-2015 | #26


Аватара для djoniAg

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


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

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


Попробовал ваш вариант скрипта - спасибо . правда не разобрался в параметре %%J
Цитата:
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows"^|Find /I "Device"`) Do set Device=%%J
CHCP 1251 >Nul
echo %Device%>>txt.txt
pause
пытаюсь получить принтер.
в консоли видно что имя полученно . но 2 я команда затирает его
Цитата:
d:\ADMIN\SSS>For /F "UseBackQ Tokens=2*" %I In (`Reg Query "HKCU\SOFTWARE\Micros
oft\Windows NT\CurrentVersion\Windows"|Find /I "Device"`) Do set Device=%J

d:\ADMIN\SSS>set Device=HP LaserJet P2015 Series PCL 6,winspool,Ne00:

d:\ADMIN\SSS>set Device=

d:\ADMIN\SSS>CHCP 1251 1>Nul

d:\ADMIN\SSS>echo 1>>txt.txt

d:\ADMIN\SSS>pause
Откуда берется
Цитата:
set Device=
??

Отправлено: 09:00, 22-06-2022 | #27


Аватара для djoniAg

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


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

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


еще вариант . но как бы "выкусить лишнее"
Цитата:
REG QUERY "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v device
вот результат
Цитата:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
device REG_SZ HP LaserJet 400 M401 PCL 6,winspool,Ne01:

Отправлено: 13:47, 22-06-2022 | #28


Аватара для NickM

Ветеран


Contributor


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

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


А так не вариант?
Код: Выделить весь код
@echo off
SetLocal EnableExtensions

for /f "tokens=2*" %%i in ('reg query "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v "Device"  2^> nul') do set device=%%j
for /f "tokens=1 delims=," %%i in ("%device%") do echo."%%i"

Последний раз редактировалось NickM, 22-06-2022 в 15:59.


Отправлено: 14:37, 22-06-2022 | #29



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Как получить доступ к файлам, папкам и разделам реестра Blast Microsoft Windows Vista 209 27-10-2013 23:01
[решено] Удаление строкового параметра в ключе реестра MKN AutoIt 4 10-04-2011 00:13
CMD/BAT - [решено] Получение значения параметра реестра IfoR Скриптовые языки администрирования Windows 6 08-04-2010 12:54
CMD/BAT - [решено] Получение значения параметра реестра user_123 Скриптовые языки администрирования Windows 3 05-04-2010 13:10
[решено] Как получить имя ветки реестра? garanov AutoIt 11 18-12-2009 12:25




 
Переход