Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在Reg查询中使用变量_Batch File_Scripting_Registry_Windows Scripting - Fatal编程技术网

Batch file 在Reg查询中使用变量

Batch file 在Reg查询中使用变量,batch-file,scripting,registry,windows-scripting,Batch File,Scripting,Registry,Windows Scripting,我有以下内容,旨在完成以下工作: 计算出HKEY_用户中的所有SID,然后在reg查询中使用该变量检查每个HKEY_用户是否存在密钥。但是,它告诉我这是一个无效的密钥,因为它在设置hkeyuserpath时基本上错过了%%~na,然后在reg查询中失败。我做错了什么 for /f %%a in ('reg query HKEY_USERS') do ( echo %%~na set hkeyuserpath="HKEY_USERS\%%~na\Software\Microsof

我有以下内容,旨在完成以下工作:

计算出HKEY_用户中的所有SID,然后在reg查询中使用该变量检查每个HKEY_用户是否存在密钥。但是,它告诉我这是一个无效的密钥,因为它在设置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

您正在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

谢谢,但是这似乎不会产生与上述相同的错误。请尝试此操作。当循环第一次找不到要查找的内容时,您正在退出循环。如果我为WhatIamLookingFor输入了一个有效的值,这对我来说很好