Listar todas as variáveis ​​de ambiente na linha de comandos

934

É possível listar todas as variáveis ​​de ambiente no prompt de comando do Windows?

Algo equivalente ao do PowerShell gci env:(ou ls env:ou dir env:).

Nicola Cossu
fonte
1
Alguém pode compartilhar uma solução do PowerShell? É suposto ser o futuro e tudo. Direita?
Bruno Bronosky
1
@BrunoBronosky, a solução PS está incluída na pergunta, e há também uma resposta repetindo-a =) #
Jon Jon
Para uma descrição de cada um, ver ss64.com/nt/syntax-variables.html
Samuel Harmer

Respostas:

1354

Apenas faça:

SET

Você também pode fazer SET prefixpara ver todas as variáveis ​​com nomes começando com prefix.

Por exemplo, se você quiser ler apenas derbydb a partir das variáveis ​​de ambiente, faça o seguinte:

set derby 

... e você obterá o seguinte:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Jon
fonte
7
Isso me pede um nome?
CMCDragonkai
53
@ KevinMeredith: Todos os comandos no shell do Windows não diferenciam maiúsculas de minúsculas.
19413 Jon
12
@CMCDragonkai você está usando o PowerShell? Parece que ele acertou um conjunto com um de seus comandos. Este é um dos seus recursos menos úteis! Eu fiz uma pergunta sobre como desabilitar isso aqui
JonnyRaa
3
Alguém pode atualizar isso para incluir uma solução do PowerShell? É suposto ser o futuro e tudo. Direita?
Bruno Bronosky
3
@ NickTimmer, já que você está falando com o bash em vez do shell do Windows, esta é a pergunta / resposta errada para você. Olhe para printenv.
Jon Jon
167

Jon tem a resposta certa, mas para elaborar um pouco mais com um pouco de açúcar sintático ..

SET | more

permite ver as variáveis ​​uma página de cada vez, em vez do lote inteiro, ou

SET > output.txt

envia a saída para um arquivo output.txt que você pode abrir no bloco de notas ou o que for ...

Fetchez la vache
fonte
7
eu não tinha idéia que moreexistia no Windows, +1
ardnew 27/06
na verdade, ele também está embutido em algumas funções. Dir, por exemplo, pagina com a / p.
John Lord
@ardnew: Agora você sabe mais ;-)
user2943111
107

Para listar todas as variáveis ​​de ambiente no PowerShell:

Get-ChildItem Env:

Ou conforme sugerido pelo user797717 para evitar o truncamento da saída:

Get-ChildItem Env: | Format-Table -Wrap -AutoSize

Fonte: Criando e modificando variáveis ​​de ambiente ( Dica da semana do Windows PowerShell )

user52028778
fonte
4
Mesmo se eu não usar o PowerShell porque não funciona para todos os comandos de cmd, esta é a única solução para uma impressão bonita (em 2 colunas) sem grandes esforços. Para obter o mesmo comportamento no cmd, você precisa de algo como este for /f "tokens=1,2 delims==" ...que se torna muito complicado ...
ROMANIA_engineer
6
Para evitar que a saída seja truncada, eu usaria o seguinte:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717
1
gci env:em vez disso Get-ChildItem Env:, mais fácil de lembrar
matson kepson
Perfeito! Não vejo por que essa não é a principal resposta para ser honesto: / EDIT: Ah, espere, entendo por que ... a pergunta original não era sobre como fazê-lo no Powershell, mas na velha escola Commandprompt: D
Yoeri Van Nieuwerburg 24/03
79

Simplesmente corra setde cmd.

Exibe, define ou remove variáveis ​​de ambiente. Usado sem parâmetros, set exibe as configurações atuais do ambiente.

Grant Thomas
fonte
11

Você pode usar SETno cmd

Para mostrar a variável atual, SETbasta

Para mostrar determinadas variáveis ​​como 'PATH', use SET PATH.

Para obter ajuda, digite set /?.

Boyce Field
fonte
2
Como isso é diferente das respostas existentes?
Peter Mortensen
7

Não perca tempo. Procure-o no registro:

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

retorna menos que o comando SET.

Paweł Piwowar
fonte
2
embora isso possa ser verdade, uma diferença é que a consulta do registro retorna REG_EXPAND_SZchaves não expandidas . Por exemplo, reg query "HKCU\Environment"mostra-me que minha %TEMP%variável depende do valor de %USERPROFILE%, portanto, se esse valor for alterado, o valor para %TEMP%. Por outro lado, SETapenas retorna"C:\Users\mpag\AppData\Local\Temp"
mpag
1
Por que você diz "não perca tempo"? A gravação de "set" no prompt de comando não é mais rápida que "reg query ..."?
Alexandre Huat 02/03
4

Se você quiser ver a variável de ambiente que acabou de definir, será necessário abrir uma nova janela de comando.

Variáveis ​​definidas com variáveis ​​setx estão disponíveis apenas em janelas de comando futuras, não na janela de comando atual. ( Setx, exemplos )

capitão puget
fonte
4

Conforme mencionado em outras respostas, você pode usar setpara listar todas as variáveis ​​de ambiente ou usar

set [environment_variable] para obter uma variável específica com seu valor.

set [environment_variable]= pode ser usado para remover uma variável da área de trabalho.

Abhishek Gurjar
fonte
1
Sim, mas como isso responde à pergunta?
Peter Mortensen