4

Мне нужно получить значение в ключе реестра и сохранить в переменной с помощью командного файла.

Я написал базовую командную строку, чтобы проиллюстрировать мою логику (используя echo вместо установки переменной):

for /f "tokens=3 delims=    " %%a in ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^|findstr /ri "REG_SZ"') do echo=%%a

Я ожидаю, что имя пользователя будет напечатано на экране, но этого не происходит.

Я уверен, что значение реестра "LastUsedUsername" не пустое, оно действительно содержит данные. Кроме того, разделителем является табуляция, а не пробелы.

РЕДАКТИРОВАТЬ

Если я просто наберу

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername"

... это возвращает:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    LastUsedUsername    REG_SZ    Administrador

Этот код

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^| findstr /ri "REG_SZ"

... возвращает:

    LastUsedUsername    REG_SZ    Administrador

Затем, когда я использую команду for, я просто не получаю вывод от echo.

2 ответа2

3

Вы вообще не нуждаетесь в переключателе delims, так как по умолчанию используется пробел, то есть то, что возвращает запрос reg. При создании файла bat для этого для цикла и реестра для ключа, с которым я связываюсь, я получаю правильное эхо-сигнал, для моего примера значение "Red" цвета фона RGB равно 55:

for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\Colors"  /V Background  ^|findstr /ri "REG_SZ"') do echo %%a
2

Синтаксис команды DOS правильный. Я хотел бы спросить, есть ли у вас правильное значение ключа реестра. Просто введите req query ... part в командную строку и посмотрите, что возвращается. Я использую Win 7 и не могу найти ключ LastUsedUsername, определенный в HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .