Definindo e obtendo variáveis ​​de ambiente do Windows no prompt de comando?

220

Desejo definir uma variável de ambiente no prompt de comando e poder acessá-la globalmente (por exemplo, devo vê-la em Sistema -> Variáveis ​​de ambiente).

Quando uso o comando set, ele não está acessível em uma nova sessão do cmd.

set NEWVAR=SOMETHING
echo %NEWVAR%

Perguntas relacionadas:

Shane
fonte
11
valor da variável setx - em seguida, reinicie o prompt de comando
Andrew

Respostas:

252

Para tornar a variável de ambiente acessível globalmente, você precisa configurá-la no registro. Como você percebeu usando apenas:

set NEWVAR = ALGO

você está apenas configurando-o no espaço de processo atual.

De acordo com esta página, você pode usar o setxcomando:

setx NEWVAR ALGO

setxestá embutido no Windows 7, mas para versões mais antigas pode estar disponível apenas se você instalar o Windows Resource Kit

ChrisF
fonte
4
Observe que você precisa especificar a cota, por exemplo: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"funcionará. Mas setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45irá fornecer erros de sintaxe
MD. Mohiuddin Ahmed
5
@ MD.MohiuddinAhmed Isso ocorre porque há espaços no caminho.
22415 ChrisF
36

Também podemos usar "setx var variable / M" para definir o var para o nível da variável de ambiente do sistema em vez do nível do usuário.

Nota: Este comando deve ser executado como administrador.

Minh Chau
fonte
10
setx program "C:\Program Files" /M

/ M para definir o nível da variável de ambiente do sistema em vez do nível do usuário, como resposta de @Minh Chau

Teste insira a descrição da imagem aqui

Linha de comando RESTART (se você não reiniciar a linha de comando, a variável de ambiente não funcionará)

insira a descrição da imagem aqui

Phan Van Linh
fonte
Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill
8
@DavidPostill minha resposta tem uma nova é que precisamos reiniciar a linha de comando. Eu acho que é importante
Phan Van Linh
2

Você pode usar setx env var [/M]como mencionado acima. Se não entrar em vigor, você pode usar refreshenvpara atualizar variáveis ​​de ambiente. Você não precisa reiniciar o computador, o explorer.exe ou o prompt de comando para fazer isso.

Edit: aparentemente refreshenv não vem naturalmente com o Windows, então aqui está a fonte: https://pastebin.com/1fJqA0pT
Salve como RefreshEnv.cmd e coloque-o em uma pasta incluída nas variáveis ​​de ambiente PATH

DFSFOT
fonte
11
+1 por mencionar 'refreshenv' - eu nunca havia encontrado isso antes!
Francis Norton
1

As variáveis ​​do sistema podem ser definidas através do CMD e do registro Por ex. consulta de registro "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

Todos os códigos CMD e variáveis ​​de sistema comumente usados ​​são fornecidos aqui: Defina as variáveis ​​de ambiente do sistema Windows usando CMD .

Abra o CMD e digite Set

Você receberá todos os valores da variável do sistema.

Digite set java para saber os detalhes do caminho do java instalado no sistema operacional da janela.

Himanshu Singh
fonte
Por favor, leia a pergunta novamente com atenção. Sua resposta não responde à pergunta original.
DavidPostill
Está perto, no entanto. O uso do REG ADD pode fazer isso?
TOOGAM
0

Quero acrescentar que, se você estiver usando o parâmetro / s com setx para definir variáveis ​​de ambiente em um computador remoto, o serviço "Registro Remoto" precisará estar em execução na máquina de destino ou você receberá um "ERRO: O operação especificada não pôde ser concluída. "

(Solicitei à Microsoft que atualize o artigo TechNet no setx para incluir essas informações.)

Tim Bailen
fonte