Como listar variáveis de ambiente global separadamente das variáveis de ambiente específicas do usuário?
13
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 iguais para todos os usuários ou apenas as variáveis de ambiente que são para o usuário ou sessão atual?
Se você definir permanentemente sua própria variável de ambiente usando o setx variable valuecomando, 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 set variable=valuecomando, a variável estará disponível imediatamente, mas não será armazenada no registro. Você não pode usar o regcomando para listá-los, embora eles sejam mostrados por set. Essas variáveis de ambiente temporárias não persistem após o término da sessão do prompt de comando.
Variáveis de ambiente dinâmicas
Existem construções que agem como variáveis de ambiente que não são armazenadas no registro dessa maneira. Por exemplo:
Apenas uma curiosidade: é possível atualizar a variável adicionada anteriormente ao registro? por exemplo setx test removeme, algo set test %test%para que você possa ter todas as variáveis listadas com um simples set? Eu estava pensando que é possível implementar um script de comando / lote para torná-los todos explícita mediante solicitação ...
Hastur
@ Hastur: Sim, isso funcionaria para tornar uma nova variável imediatamente disponível e persistente.
RedGrittyBrick
@hastur @RedGrittyBrick - é possível, mas definitivamente não é um oneliner no cmd do Windows. Se você instalar achocolatada tem refreshenv.cmdutilidade que é de 10 linhas de código e, basicamente, ele consulta e refresca entradas de registro
maoizm
O SETcomando mostra variáveis de ambiente dinâmicas? Estou tentando encontrar tudo e qualquer coisa que as Ferramentas de compilação da Microsoft definiram durante uma sessão, só quero cobrir minhas bases.
Ungeheuer
1
Para saída limpa, sem linhas extras e espaços em preto, 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 %I
Variáveis de ambiente globais (do sistema):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Funciona no Windows 7-10 e, provavelmente, em versões anteriores.
Obrigado por isso. Observe que ele solta parte do valor se tiver espaços. Portanto, uma entrada do registro VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools aparece como justa VS140COMNTOOLS=C:\Program.
metal
@metal obrigado por relatar este caso de canto. Sinta-se livre para editar a resposta se você encontrar solução para espaços - Eu não tenho quaisquer computadores com Windows agora
maoizm
Enviei uma atualização para esse efeito. Você ou algum mod precisará aprová-lo.
de metal
1
digite o comando em lote: echo% temp%
Se a variável de ambiente "temp" contiver "H: \ Users \ amacm \ AppData \ Local", o Windows responderá imediatamente com o seguinte:
H: \ Usuários \ amacm \ AppData \ Local
Se não houver variável de ambiente chamada "temp", o Windows responderá com o seguinte:
setx test removeme
, algoset test %test%
para que você possa ter todas as variáveis listadas com um simplesset
? Eu estava pensando que é possível implementar um script de comando / lote para torná-los todos explícita mediante solicitação ...refreshenv.cmd
utilidade que é de 10 linhas de código e, basicamente, ele consulta e refresca entradas de registroSET
comando mostra variáveis de ambiente dinâmicas? Estou tentando encontrar tudo e qualquer coisa que as Ferramentas de compilação da Microsoft definiram durante uma sessão, só quero cobrir minhas bases.Para saída limpa, sem linhas extras e espaços em preto, 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 %I
Variáveis de ambiente globais (do sistema):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Funciona no Windows 7-10 e, provavelmente, em versões anteriores.
fonte
VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
aparece como justaVS140COMNTOOLS=C:\Program
.digite o comando em lote: echo% temp%
Se a variável de ambiente "temp" contiver "H: \ Users \ amacm \ AppData \ Local", o Windows responderá imediatamente com o seguinte:
H: \ Usuários \ amacm \ AppData \ Local
Se não houver variável de ambiente chamada "temp", o Windows responderá com o seguinte:
% temp%
fonte