Проверка ключ реестра bat
Здравствуйте! Помогите пожалуйста! Хочу сделать такое, но не знаю как, чтобы bat бат файл проверял ветку в реестра и сравнивал параметр. Например: есть число 8888, bat проверяет параметр в реестре если там тоже 8888, то запускается start.exe, если параметр не 8888, то запускаеться error.exe
|
Petya V4sechkin |
27-01-2011 16:53 1598505 |
|
Не нашел там ничего подходящего
|
hutnet2, если желаете получить конкретный ответ - задавайте конкретный вопрос: имя ветки, имя параметра, тип параметра, все возможные условия: (параметр отсутствует, параметр <> 8888, параметр = 8888 ) и что в каждом из этих 3-х случаев делать/запускать
|
в ветке HKLM\MountedDevices\, строковый параметр red должен иметь значение 8888, если его нет или значение не равно 8888, то запускается error.exe, если равно 8888, то запускаеться start.exe
|
как-то так, хотя в HKLM и нельзя создать ветку MountedDevices:
Код:
@echo off
set "$red="& for /f "tokens=2*" %%a in (
'REG QUERY "HKLM\SYSTEM\MountedDevices" /v red^|Find "REG_SZ"'
) do set "$red=%%b"
if "%$red%"=="8888" ("start.exe") else error.exe
|
Цитата:
Цитата amel27
@echo off
set "$red="& for /f "tokens=2*" %%a in (
'REG QUERY "HKLM\SYSTEM\MountedDevices" /v red^|Find "REG_SZ"'
) do set "$red=%%b"
if "%$red%"=="8888" (start.exe) else error.exe
»
|
Не помогло, при запуски bat-файла, ни какой реакции, ничего не запускаеться...
|
echo on
set "$red="& for /f "tokens=2*" %%a in (
'REG QUERY "HKLM\SYSTEM\MountedDevices" /v red^|Find "REG_SZ"'
) do set "$red=%%b"
if "%$red%"=="8888" (start.exe) else error.exe
Pause
Дописал в конец батника pause, в начале echo on, и теперь видно ответ: Попытка записи в несуществующий канал
|
SendMessage |
27-01-2011 20:09 1598648 |
hutnet2, попробуйте явно прописать путь к REG - %systeroot%\system32\reg
|
Цитата:
Цитата SendMessage
hutnet2, попробуйте явно прописать путь к REG - %systeroot%\system32\reg »
|
Это как?
|
SendMessage |
28-01-2011 05:36 1598874 |
Код:
'%systemroot%\system32\REG QUERY "HKLM\SYSTEM\MountedDevices" /v red^|Find "REG_SZ"'
|
SendMessage, все спасибо, заработало!
|
SendMessage, если полное имя — тогда тогда уж:
Код:
"%systemroot%\system32\reg.exe"
|
SendMessage |
28-01-2011 11:42 1599053 |
А еще правильней было бы не называть батник reg.bat :)
Тогда бы и не нужно было б подставлять пути.
|
Цитата:
Цитата SendMessage
А еще правильней было бы не называть батник reg.bat »
|
Нет. Надо и путь указывать, и расширение. Я ещё могу понять, когда не указывают путь, полагаясь на PATH.
|
SendMessage |
28-01-2011 13:59 1599149 |
Цитата:
Цитата Iska
Я ещё могу понять, когда не указывают путь, полагаясь на PATH. »
|
Давайте не будем становиться в позу учителя. Совершенно ведь ясно, что человек не смог получить доступ к командам reg.exe поскольку создал одноименный батник. И конкретная задача стояла отцепить от батника. И если даже он бросил свой батник в папку system32 - файл с расширением exe имеет приоритет. Так что Ваши замечания - суть просто придирки.
Это без обид - просто по теме дискуссии. :)
|
Так кто из нас становится в позу ;), а?
А по существу — Вы говорите об одном, частном случае, а я же говорю, как нужно делать сие правильно, чтобы избегать в будущем подобных нелепых ошибок. При чём тут придирки?!
|
А подскажите пожалуйста, как сделать тоже самое, но только если параметр в reg_dword. Конкретнее нужно получить значение[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] в REG_DWORD-параметре InstallDate и сравнить его с условием = или не=
|
SendMessage |
28-01-2011 18:24 1599342 |
Все то же самое, как сделал amel27:
Код:
for /f "tokens=3" %%i in (
'REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallDate ^| find "REG_DWORD"'
) do (set /a val=%%i)
if %val%==12345 ("start.exe") else error.exe
|
SendMessage, попробовал повторить тоже для REG_SZ, но val возвращает 0
|
Komoliddin_Fuzaylitdinov@fb |
27-11-2018 09:06 2842809 |
SendMessage, Работает но если нет такой пут батник закрывается. можно сделать если нет такой ключ типа echo error ??
|
Время: 18:28.
© OSzone.net 2001-