Como obter um valor de registro e definir em uma variável em lote

4

Eu preciso obter um valor em uma chave do Registro e armazenar em uma variável usando um arquivo em lotes.

Eu escrevi uma linha de comando básica para exemplificar minha lógica (usando echo em vez de definir uma variável):

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

Espero que o nome de usuário seja impresso na tela, mas isso não acontece.

Tenho certeza de que o valor do Registro "LastUsedUsername" não está vazio, ele realmente tem dados. Além disso, o delimitador é uma guia, não espaços.

EDITAR

Se eu apenas digitar

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

... ele retorna:

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

Este código

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

... retorna:

    LastUsedUsername    REG_SZ    Administrador

Então, quando eu uso o comando for, simplesmente não obtenho nenhuma saída do eco.

    
por John 03.11.2015 / 19:54

2 respostas

3

Você não precisa da opção delims, pois o padrão é espaço, que é o que a consulta reg está retornando. Ao fazer um arquivo bat para este loop e registro em uma chave que estou mexendo eu recebo o eco correto, para minha instância, o valor "vermelho" da cor de fundo RGB é 55:

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

A sintaxe do comando DOS está correta. Gostaria de questionar se você tem o valor correto da chave do Registro. Basta digitar a consulta req ... parte na linha de comando e ver o que é retornado. Estou executando o Win 7 e não encontro a chave, LastUsedUsername, definida em NT \ CurrentVersion \ Winlogon HKLM \ Software \ Microsoft \ Windows

    
por 03.11.2015 / 21:18