Войти

Показать полную графическую версию : [решено] Выполнение команды в зависимости от записи в реестре


dassen
04-04-2021, 11:43
Например, запустить notepad только при наличии такой записи в реестре:
[HKEY_CURRENT_USER\1]
@="one"
(только cmd/bat)

Iska
04-04-2021, 12:31
@echo off
setlocal enableextensions enabledelayedexpansion

(reg.exe query "HKEY_CURRENT_USER\1" /ve | find.exe /i "REG_SZ one") && start "" "notepad.exe"

endlocal
exit /b 0

dassen
04-04-2021, 13:08
Блокнот не запустился...
(проверял на свежеустановленной "чистой" WinXP SP3 с упомянутой записью в реестре)

Iska
04-04-2021, 14:19
dassen, формат вывода утилиты reg.exe может отличаться от версии к версии. Откройте cmd.exe. Выполните в нём:
reg.exe query "HKEY_CURRENT_USER\1" /ve
Посмотрите на вывод утилиты. Затем выполните там же:
>"Out.txt" reg.exe query "HKEY_CURRENT_USER\1" /ve
Откройте файл Out.txt из текущего каталога. Скопируйте потребную часть вывода утилиты из файла Out.txt в пакетный файл вместо «REG_SZ one». Сохраните пакетный файл и проверьте.

alpap
04-04-2021, 15:48
dassen, давайте точнее задачу и объемнее
просто намекая на возможный ход развития, но столкнувшись с ним в боевых условиях вы опять сюда придете.

dassen
04-04-2021, 16:06
Iska, спасибо!
Установил, что между REG_SZ и one должен быть знак табуляции:
(reg query "HKEY_CURRENT_USER\1" /ve | find /i "REG_SZ one") && start "" notepad
Если представленный код скопировать в батник, то все работает (версию reg.exe не менял).
А при копировании кода из Вашего первого сообщения между REG_SZ и one получил четыре пробела...
Использую AkelPad:
Настройки \ Параметры \ Редактор 1 \ Размер табуляции \ Пробелы (птичка снята).
Кодировка текста батника: 866 (OEM Russian)


alpap, Iska,
да, в принципе, задача уже решена.
О "боевых условиях":
нужно бы уточнить, что @="one", а не @="one1", @="oneday" и т.д (т.е. сейчас в реестре после one может быть любой текст, и notepad запустится).

Iska
05-04-2021, 00:29
Установил, что между REG_SZ и one должен быть знак табуляции: »
Угу:
dassen, формат вывода утилиты reg.exe может отличаться от версии к версии. »
А при копировании кода из Вашего первого сообщения между REG_SZ и one получил четыре пробела... »
И это тоже правильно — в моей версии reg.exe там именно пробелы.

О "боевых условиях":
нужно бы уточнить, что @="one", а не @="one1", @="oneday" и т.д (сейчас в реестре после one может быть любой текст, и notepad запустится). »
Это сильно существенно?
… | findstr.exe /i /r /e /c:".*REG_SZ one" …
(не проверялось).

dassen
05-04-2021, 01:17
Iska, понятно, спасибо!
Именно то, что я и хотел получить:
(reg query "HKCU\1" /ve | findstr /i /r /e /c:".*REG_SZ one") && start "" notepad




© OSzone.net 2001-2012