【问题标题】:Using a variable in Reg Queries在 Reg 查询中使用变量
【发布时间】:2014-03-21 11:07:33
【问题描述】:

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

计算出 HKEY_USERS 中的所有 SID,然后在 reg 查询中使用该变量来检查每个 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

【问题讨论】:

    标签: batch-file scripting registry windows-scripting


    【解决方案1】:

    您在 for 循环中设置 hkeyuserpath,因此您必须使用延迟扩展来访问该变量。

    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
    

    【讨论】:

    • 谢谢,但这似乎不会产生与上述相同的错误
    • 试试这个。第一次找不到 WhatIamLookingFor 时,您正在退出循环。如果我为 WhatIamLookingFor 输入有效值,这对我来说很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多