0

我想找到一个指定的注册表值,如果它存在,然后去执行作业

在这里我的脚本使用但不成功

:SkinReplacementKIS64
CLS
ECHO.
REG Query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\KasperskyLab\AVP19.0.0\settings" /v "EnableSelfProtection" |find "1" >nul & IF %ErrorLevel% EQU 0 (
ECHO.
ECHO Please disable Kaspersky self-defense first before doing the action!
ECHO.
pause
GOTO SkinReplacementKIS64
) else (
CLS
ECHO ***************************************************************************************
ECHO Kaspersky Tweaker v1.4 for KFA, KAV, KIS, KTS, KSC (19.0.0.1088)
ECHO ***************************************************************************************
ECHO.
net stop AVP19.0.0
dark_skin_kis.exe /p12345678
net start AVP19.0.0
ECHO.
pause
GOTO KIS64
)

我错了什么?请帮忙

4

2 回答 2

0

根据我的评论,最简单的方法是从潜在匹配中排除第一行:

Reg Query "HKLM\SOFTWARE\WOW6432Node\KasperskyLab\AVP19.0.0\settings" /V "EnableSelfProtection" 2>Nul | Find /V "HKLM" | Find "1" >Nul ...

您甚至可能希望使用x1而不是1提供更多确定性。

于 2018-08-19T18:25:53.677 回答
0

for /f一个测试来获取值吗?

@echo off

:SkinReplacementKIS64
CLS
ECHO.
for /f "delims=" %%a in ('REG Query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\KasperskyLab\AVP19.0.0\settings" /v "EnableSelfProtection"') do set "$val=%%a"

if %$val%==1 (
ECHO.
ECHO Please disable Kaspersky self-defense first before doing the action!
ECHO.
pause
GOTO SkinReplacementKIS64
) else (
CLS
ECHO ***************************************************************************************
ECHO Kaspersky Tweaker v1.4 for KFA, KAV, KIS, KTS, KSC (19.0.0.1088)
ECHO ***************************************************************************************
ECHO.
net stop AVP19.0.0
dark_skin_kis.exe /p12345678
net start AVP19.0.0
ECHO.
pause
GOTO KIS64
)
于 2018-08-19T12:02:56.583 回答