我有以下内容,旨在执行以下操作:
计算出HKEY_USERS中的所有 SID,然后在 reg 查询中使用该变量来检查每个HKEY_USER是否存在密钥。但是,它告诉我这是一个无效的键,因为它基本上只是在设置 hkeyuserpath 时错过了%%~na
,然后在 reg 查询上失败。我做错了什么?
for /f %%a in ('reg query HKEY_USERS') do (
echo %%~na
set hkeyuserpath="HKEY_USERS%%~naSoftwareMicrosoftWindowsCurrentVersionRun"
reg query %hkeyuserpath% /v *WhatIamLookingfor*
if "%ERRORLEVEL%" EQU "0" goto HELLO
if "%ERRORLEVEL%" EQU "1" goto GOODBYE
:HELLO
echo Hello
GOTO END
:GOODBYE
GOTO END
)
:END
pause
你在 for 循环中设置 hkeyuserpath,所以你必须使用延迟扩展来访问变量。
setlocal enabledelayedexpansion
for /f %%a in ('reg query HKEY_USERS') do (
echo %%~na
set hkeyuserpath="HKEY_USERS%%~naSoftwareMicrosoftWindowsCurrentVersionRun"
reg query "!hkeyuserpath!" /v *WhatIamLookingFor*
if not errorlevel 1 (
Echo(Hello & goto :end
) ELSE (
Echo(Goodbye
)
)
:end
pause