在Reg Queries中使用变量

时间:2014-02-20 13:15:21

标签: batch-file scripting registry windows-scripting

我有以下内容,意在执行以下操作:

计算出HKEY_USERS中的所有SID,然后在reg query中使用该变量来检查每个HKEY_USER的密钥是否存在。但是,它告诉我它是一个无效的密钥,因为它基本上只是在设置hkeyuserpath时错过了%%~na,然后在reg查询上失败了。我究竟做错了什么?

for /f %%a in ('reg query HKEY_USERS') do (

    echo %%~na
    set hkeyuserpath="HKEY_USERS\%%~na\Software\Microsoft\Windows\CurrentVersion\Run"

    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

1 个答案:

答案 0 :(得分:2)

您正在for循环中设置hkeyuserpath,因此您必须使用delayedexpansion来访问变量。

setlocal enabledelayedexpansion
for /f %%a in ('reg query HKEY_USERS') do (

    echo %%~na
    set hkeyuserpath="HKEY_USERS\%%~na\Software\Microsoft\Windows\CurrentVersion\Run"

    reg query "!hkeyuserpath!" /v *WhatIamLookingFor*

    if not errorlevel 1 (
      Echo(Hello & goto :end
    ) ELSE (
      Echo(Goodbye
    )

)
:end
pause