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.

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.


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


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

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).


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.


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.


5
setx permite excluir também definindo o valor em branco
Steve Lloyd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.