Como listar as variáveis de ambiente global separadamente das variáveis de ambiente específicas do usuário?

8

No Windows (por exemplo, versão 10), você pode listar variáveis de ambiente usando o comando

set

Como você lista apenas as variáveis de ambiente que são as mesmas para todos os usuários ou apenas as variáveis de ambiente que são para o usuário ou sessão atual?

    
por RedGrittyBrick 16.02.2017 / 11:30

2 respostas

9

As coisas são um pouco mais complicadas do que a Microsoft às vezes faz parecer.

Muitas das variáveis de ambiente são armazenadas no Registro. Isso significa que você pode consultá-los usando o comando reg

Comum a todos os usuários

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

Específico para a sessão atual do usuário

reg query HKCU\Environment
reg query "HKCU\Volatile Environment"

Definido pelo usuário

Se você definir permanentemente sua própria variável de ambiente usando o comando setx variable value , ela será armazenada no registro, mas não disponibilizada imediatamente.

C:\>setx test removeme

SUCCESS: Specified value was saved.

C:\>reg query "HKCU\Environment"

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    test    REG_SZ    removeme

Se você usar o comando set variable=value , a variável estará disponível imediatamente, mas não será armazenada no registro. Você não pode usar o comando reg para listá-los, embora eles sejam mostrados por set . Essas variáveis de ambiente temporário não persistem depois que você termina a sessão de prompt de comando.

Variáveis de ambiente dinâmico

Existem construções que agem como variáveis de ambiente que não são armazenadas no registro dessa maneira. Por exemplo:

echo %TIME%
    
por 16.02.2017 / 11:30
0

Para saída limpa sem linhas extras e espaços pretos, use os seguintes comandos em cmd.exe :

Variáveis de ambiente do usuário:

FOR /F "tokens=1,3 skip=2" %G IN ('reg query HKCU\Environment') DO @echo.%G=%H

Variáveis de ambiente globais (sistema):

FOR /F "tokens=1,3 skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo.%G=%H

Funciona no Windows 7-10 e, provavelmente, também em versões anteriores

    
por 08.06.2017 / 14:37