Batch file 检查批处理文件中的多个注册表项
在启动程序之前,我需要检查注册表中的多个键(它们不应该存在)。广泛使用的检查注册表项的解决方案只适用于一次检查,因为它将全局错误级别设置为1。下面的示例无法正常工作Batch file 检查批处理文件中的多个注册表项,batch-file,Batch File,在启动程序之前,我需要检查注册表中的多个键(它们不应该存在)。广泛使用的检查注册表项的解决方案只适用于一次检查,因为它将全局错误级别设置为1。下面的示例无法正常工作 @echo off reg query HKEY_LOCAL_MACHINE\SOFTWARE\mykey >nul if %errorlevel% equ 0 ( echo "mykey exists - do nothing" ) else ( reg query HKEY_LOCAL_MACHINE\S
@echo off
reg query HKEY_LOCAL_MACHINE\SOFTWARE\mykey >nul
if %errorlevel% equ 0 (
echo "mykey exists - do nothing"
) else (
reg query HKEY_LOCAL_MACHINE\SOFTWARE\mykey2 >nul
if %errorlevel% equ 0 (
echo "mykey2 exists - do nothing"
) else (
run my program
)
)
像这样使用errorlevel需要。您可以尝试使用
像这样使用errorlevel需要。您可以尝试使用
从以下示例中获得灵感:
@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
::********************************************
从以下示例中获得灵感:
@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
::********************************************
这不起作用,而且代码背后的逻辑也有错误。@Himmel-我删除了一个冗余的
eq
。errorlevel的值为1,无论设置为1,因此在您的情况下都会产生假阴性条件。@Himmel,但是在成功执行时,reg
将errorlevel设置为1?这不起作用,而且代码背后的逻辑也有错误。@Himmel-我删除了一个冗余的eq
。errorlevel的值将为1,无论它设置为1,因此在您的情况下都将产生假阴性条件。@Himmel,但是在成功执行时reg
将errorlevel设置为1?