script de lote do windows obtém mudanças na variável de ambiente

0

Eu tenho um script que faz algo como

setx %PATH% %PATH%;%ANOTHER_VAR%

echo %PATH%

Quando faço o eco do caminho, ele não inclui% ANOTHER_VAR%. Existe uma maneira de garantir que as novas variáveis sejam refletidas na segunda vez que eu faço eco do% PATH%

EDIT: Eu estou escrevendo um script de fantoche que chama 2 comandos exec separados. A primeira chama setx em uma variável. Como o segundo é acessado em um novo comando exec, eu esperaria que ele tivesse acesso à variável recém-definida, mas isso não acontece.

Eu também tentei apenas criar uma variável no script1 e acessá-la do script2, mas ela não está acessível (como esperado).

    
por Jeff Storey 01.03.2012 / 03:48

1 resposta

1

Pelo que entendi, o setx define a variável por meio do registro (consulte este artigo ). Requer o início de um novo shell de comando para ver os resultados.

Se você quiser alterar a configuração do caminho na sessão de comando atual, use set path=%path%;%another_variable% .

Em resposta ao comentário, isso é do setx / ?:

NOTA: 1) O SETX grava variáveis no ambiente principal do registro.

2) Em um sistema local, variáveis criadas ou modificadas por essa ferramenta      estarão disponíveis em futuras janelas de comando, mas não no      janela de comando atual do CMD.exe .

Se você quiser alterar a variável na sessão de comando atual, use SET simples.

Abaixo está a saída do meu sistema:

C:\Windows\system32>set path2=%cd%

C:\Windows\system32>set path2
path2=C:\Windows\system32

C:\Windows\system32>cd drivers

C:\Windows\System32\drivers>set path2=%path2%;%cd%

C:\Windows\System32\drivers>set path2
path2=C:\Windows\system32;C:\Windows\System32\drivers
    
por 01.03.2012 / 03:56