Por que a variável de ambiente não é atualizada no cmd sem reiniciar?

1

Comandos CMD:

setx SOMEVARIABLE "newpath" /M
setx SOMEVARIABLE "%SOMEVARIABLE%;newpath2" /M

Produção esperada em ECHO %SOMEVARIABLE% :

newpath;newpath2

Resultado real:

%SOMEVARIABLE%

Valor real armazenado (em Propriedades do sistema - > GUI de variáveis de ambiente):

%SOMEVARIABLE%;newpath2

A única maneira de obter a saída esperada é, se eu reiniciar o prompt de comando toda vez que eu modificar a variável de ambiente. Estou usando este comando para automatizar o valor da variável de ambiente acrescentando várias vezes durante o mesmo processo.

  1. Por que a variável de ambiente não é atualizada no cmd sem reiniciar?
  2. É possível obter o valor atualizado de% SOMEVARIABLE% sem reiniciando o prompt de comando?
por John Nevermore 03.11.2013 / 02:41

1 resposta

4

O problema é que setx modifica o ambiente global , não o ambiente local. Portanto, você precisa reiniciar o prompt de comando para selecionar a alteração.

Você tem duas opções:

  • Use uma ferramenta diferente que modifique o ambiente global e o ambiente local
  • Crie um arquivo em lote que faça as duas coisas e use-o:

    ::setenv.bat
    @echo off
    set %1=%2
    setx %1 %2 %3
    
por 03.11.2013 / 02:50