 |
|
Существуют ли разделы
Здравствуйте, подскажите, пожалуйста в написании скрипта.
Делаю проверку на наличие раздела реестра таким образом, правильно ли?
Код:
::Установить раздел реестра
set Compatibility="HKCR\exefile\shellex\ContextMenuHandlers\Compatibility"
::Проверить раздел реестра
reg query %Compatibility% >nul 2>&1
::Если раздел реестра существует, занести в переменную
if "%errorlevel%"=="0" (set "GiveAcces6=Присутствует.")
::Если раздел не существует
if "%errorlevel%"=="1" (set "GiveAcces6=Отсутствует.")
set ModernSharing="HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing"
reg query %ModernSharing% >nul 2>&1
if "%errorlevel%"=="0" (set "GiveAcces5=Присутствует.")
if "%errorlevel%"=="1" (set "GiveAcces5=Отсутствует.")
echo Параметр: %GiveAcces6%
echo Параметр: %GiveAcces5%
Если все правильно, то движемся дальше.
Как сделать проверку сразу этих 2 разделов реестра?, и вывести сообщение вида
Код:
Необходимость удаления: присутствует(если существует хоть 1 из этих разделов)/отсутсвует(если этих разделов нет)
нашел такой код, но разобраться в нем не могу:
Код:
@echo off
cls & color 0A & echo.
Mode con cols=70 lines=5
Title Check Startup Registry Keys
Set TmpLogFile=TmpLogkey.txt
Set LogFile=Startup_key_Log.txt
If Exist %TmpLogFile% Del %TmpLogFile%
If Exist %LogFile% Del %LogFile%
Set mykey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"^
^ "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"^
^ "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"^
^ "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"
Echo.
ECHO **************************************
ECHO Please wait..........
ECHO **************************************
For %%K in (%mykey%) Do Call :Check_Key %%K %TmpLogFile%
Cmd /U /C Type %TmpLogFile% > %LogFile%
Start "" %LogFile%
Exit /b
::********************************************
:Check_Key
reg QUERY %1 >nul 2>&1
(
if %errorlevel% equ 0 ( reg QUERY %1 /s
) else ( echo %1 ===^> Not found
)
) >>%2 2>&1
::********************************************
|
DJ Mogarych |
06-10-2021 13:17 2968225 |
Powershell:
Код:
if ((Test-Path Registry::HKCR\exefile\shellex\ContextMenuHandlers\Compatibility) -or
(Test-Path Registry::HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing)) {
"существует хоть 1 из этих разделов"
}
else {
"этих разделов нет"
}
|
Здравствуйте, спасибо за скрипт, но я далек от PowerShell, к тому же эта проверка ключей происходит не в начале моего bat файла, а уже после некоторых действий, поэтому предпочтительно все сделать именно через bat.
Да о чем тут говорить, я даже powershell файл не умею вызывать через bat :)
Напишите, пожалуйста, как это сделать правильно, испытаю ваш скрипт.
P.S правильно я делаю в проверку на существование раздела реестра? Хотелось бы все таки знать, чтобы не думать об этом.
И, пожалуйста, коллеги или Вы, напишите альтернативу на CMD.
|
Цитата:
Цитата VladoSer
Как сделать проверку сразу этих 2 разделов реестра?, и вывести сообщение вида ... если существует хоть 1 из этих разделов »
|
Да хоть сто штук, сколько запросов нарисуете:
Код:
@Echo Off
cls
Set "Present=Отсутствует."
>nul 2>&1 reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing" &&Set "Present=Присутствует."
>nul 2>&1 reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\Sharing" &&Set "Present=Присутствует."
Echo %Present%
Pause
Exit /B
Либо так, но длиннее, зато можно анализировать каждый запрос по отдельности
Код:
@Echo Off
cls
>nul 2>&1 reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing" &&Set /A @q1=1 || Set /A @q1=0
>nul 2>&1 reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\Sharing" &&Set /A @q2=1 || Set /A @q2=0
Set "@q"
Set "Present=Присутствует."
If %@q1%==0 If %@q2%==0 Set "Present=Отсутствует."
Echo %Present%
Pause
Exit /B
Красная строка - отладочная.
|
Цитата:
Цитата megaloman
Либо так, но длиннее, зато можно анализировать каждый запрос по отдельности »
|
Использовал данный код, все работает как надо, помогаете уже не раз, спасибо :)
|
VladoSer, Еще вариант:
Код:
@Echo Off
cls
Set "Present=Присутствует."
>nul 2>&1 (
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\7-Zip1" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\Sharing1" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ANotepad++1" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ModernSharing2" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\7-Zip2" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\Sharing2" ||(^
reg query "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ANotepad++" ||(^
Set "Present=Отсутствует."))))))))
)
Echo %Present%
Pause
Exit /B
Количество красных закрывающих скобок равно числу запросов. Не знаю только максимально возможный уровень вложенности такой конструкции.
|
Время: 16:33.
© OSzone.net 2001-