Tenho que definir variáveis de ambiente em diferentes máquinas com Windows, mas não quero me incomodar em alterá-las manualmente acessando a tela de propriedades de "Meu Computador"
Quero fazer isso na linha de comando, com um arquivo em lote. Pelo que eu entendi, usar set mudará apenas a variável para os processos que chamarei na janela de comando.
Eu quero defini-lo definitivamente, então mais tarde, ao executar um novo processo, ele usará as novas configurações que defini. Existe uma maneira de fazer isso na linha de comando?
Respostas:
Use o comando SETX (observe o sufixo 'x') para definir variáveis que persistem após o fechamento da janela cmd.
Por exemplo, para definir um env var "foo" com valor de "bar":
Embora valha a pena ler as 'notas' que são exibidas se você imprimir o uso (
setx /?
), em particular:No PowerShell, o comando [Environment] :: SetEnvironmentVariable .
fonte
[Environment]::SetEnvironmentVariable('PATH', "Whatever you need it to be", "Machine")
ver msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspxA documentação do MSDN para variáveis de ambiente informa o que fazer:
Obviamente, você precisará de direitos de administrador para fazer isso. Não conheço nenhuma maneira de transmitir uma mensagem do Windows em lote do Windows, então você precisará escrever um pequeno programa para fazer isso.
fonte
setx
por abaixo?fonte
setx
(e sem possibilidade de instalá-lo). Uso simples (no meu caso):wsh.Environment("user").Item("myVar") = "my value"
Na verdade, SET TEST_VARIABLE = value funciona apenas para o processo atual, por isso
SETX
é obrigatório. Um exemplo rápido para armazenar permanentemente uma variável de ambiente no nível do usuário.SETX TEST_VARIABLE etc
,. Ainda não aplicado (echo %TEST_VARIABLE%
programas%TEST_VARIABLE%
,echo %TEST_VARIABLE%
showsetc
.etc
.fonte
fonte