2014-02-20 2 views
0

У меня есть ниже, который предназначен для выполнения следующих действий:Использование переменной в Рег Запросы

Потренируйтесь все SIDs в HKEY_USERS, а затем использовать эту переменную в Изотерм запроса для проверки существования ключа для каждого HKEY_USER. Тем не менее, он говорит мне, что это недопустимый ключ, потому что в основном он просто пропускает %%~na, когда он устанавливает hkeyuserpath, а затем не выполняет запрос 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 

ответ

2

Вы устанавливаете hkeyuserpath внутри цикла for, поэтому для доступа к переменной вам необходимо использовать 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 
+0

Спасибо, однако, похоже, что это не работает, создавая ту же ошибку, что и выше. – PnP

+0

Попробуйте это. Вы выходили из цикла в первый раз, когда он не мог найти * WhatIamLookingFor *. Это отлично работает для меня, если я ставлю допустимое значение для * WhatIamLookingFor * –

+0

Спасибо! Я вижу, где я ошибся! – PnP

 Смежные вопросы

  • Нет связанных вопросов^_^