Definindo uma variável de ambiente do sistema a partir de um arquivo em lotes do Windows?

195

É possível definir uma variável de ambiente no nível do sistema em um prompt de comando no Windows 7 (ou mesmo no XP). Estou executando em um prompt de comando elevado.

Quando uso o setcomando ( set name=value), a variável de ambiente parece ser válida apenas para a sessão do prompt de comando.

Santhosh
fonte

Respostas:

179

As ferramentas de suporte do XP (que podem ser instaladas a partir do CD do XP) vêm com um programa chamado setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Eu acho que o Windows 7 realmente vem setxcomo parte de uma instalação padrão.

Hugh Allen
fonte
7
O Windows 7 (talvez o Vista já esteja) tem o padrão setx, com uma pequena alteração? não há nenhuma -ibandeira e apenas correr setx /?exibe todos os ajuda + exemplos
Stijn
3
Lembre-se de que você sempre pode verificar se possui este programa no seu caminho digitando wheree, em seguida, o nome do programa (nesse caso where setx.exe, testando-o nas caixas Server 2008 e Server 2008SP2, descobri que nos dois casos existia em%windir%\System32\setx.exe
aolszowka 20/09/2013
2
@stijn - A versão Win7 também mudou oficialmente o introdutor da bandeira de -para a barra /. No entanto, parece que a -versão ainda funciona.
TED
2
Parece haver um limite de 1.024 comprimento para o conteúdo variável setx
zhy2002
O setx fornecido pelas Ferramentas de suporte do XP SP2 requer barra /e o traço -não funciona. setx variable value /m
24517 Keith
137

Exemplo simples de como definir JAVA_HOME setx.exena linha de comando:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Isso definirá a variável de ambiente "JAVA_HOME" para o usuário atual. Se você deseja definir uma variável para todos os usuários, use a opção "-m". Aqui está um exemplo:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Nota : você precisa executar este comando como administrador.

Nota : Certifique-se de executar o comando setx em uma janela Admin da linha de comandos

Mindaugas Jaraminas
fonte
7
note também que algumas ferramentas não como espaços em JAVA_HOME por isso vale a pena usar Progra~1assim: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael
1
Onde isso foi toda a minha vida.
Philip Rego
20

Se você definir uma variável via SETX, não poderá usar essa variável ou suas alterações imediatamente. Você precisa reiniciar os processos que desejam usá-lo.

Use a sequência a seguir para defini-la diretamente também no processo de configuração (funciona perfeitamente para mim em scripts que executam algumas coisas de inicialização após definir variáveis ​​globais) :

SET XYZ=test
SETX XYZ test
Anton F.
fonte
Obrigado, isso estava me deixando louco! O CMD.EXE precisa desesperadamente de uma atualização para se comportar como um console normal ...!
Salvador Valencia
Não entendi: onde corro essas duas linhas?
Danijel
1
Você também pode executar o comando refreshenvapós usar o setx para fazer uso das novas variáveis.
BrianHVB
@BrianHVB refreshenvnão reconhecido como um comando. Você está fazendo isso em cmdou powershell? (Edição: testado em ambos, na verdade, não funciona em nenhum dos consoles)
bigp
@ Bigp oops, você está certo. É um comando que é adicionado quando o chocolatey é instalado. Eu tenho chocolate em todos os meus sistemas e não percebi até procurá-lo.
BrianHVB 4/03
2

Para o XP, usei uma ferramenta (gratuita / doeware) chamada "RAPIDEE" (Rapid Environment Editor), mas o SETX é definitivamente suficiente para o Windows 7 (eu não sabia disso antes).

FractalSpace
fonte
2

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 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
1

Caso você precise excluir uma variável, você pode usar o SETENV da Vincent Fatica disponível em http://barnyard.syr.edu/~vefatica . Não exatamente recente (98), mas ainda trabalhando no Windows 7 x64.

abortar
fonte
5
setx permite excluir também definindo o valor em branco
Steve Lloyd