Показать полную графическую версию : [решено] Выполнение команды в зависимости от записи в реестре
Например, запустить notepad только при наличии такой записи в реестре:
[HKEY_CURRENT_USER\1]
@="one"
(только cmd/bat)
@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
Блокнот не запустился...
(проверял на свежеустановленной "чистой" WinXP SP3 с упомянутой записью в реестре)
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». Сохраните пакетный файл и проверьте.
dassen, давайте точнее задачу и объемнее
просто намекая на возможный ход развития, но столкнувшись с ним в боевых условиях вы опять сюда придете.
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 запустится).
Установил, что между 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" …
(не проверялось).
Iska, понятно, спасибо!
Именно то, что я и хотел получить:
(reg query "HKCU\1" /ve | findstr /i /r /e /c:".*REG_SZ one") && start "" notepad
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.