define a variável de ambiente do lote

0

Quando defino uma variável de ambiente envir usando o comando setx , parece que ela não está realmente 'definida' no ambiente.

setx envir "windows"
if 1==1 (
    setx envir "unix"
)
echo %envir%
set

O comando set exibe uma lista de variáveis de ambiente, mas não exibe a variável atualmente definida pela linha anterior.

    
por DDK 15.10.2014 / 15:02

2 respostas

1

No seu exemplo, a variável de ambiente %ENVIR% está definida como "windows ". Isso é armazenado nas variáveis de ambiente específicas do usuário no registro Windows . A alteração não é refletida diretamente nos ambientes dos processos atualmente ativos.

Para realmente ver essa nova configuração através do comando set , você precisa abrir uma nova caixa de comando usando cmd.exe . A caixa de comando atual não releia automaticamente as configurações alteradas do registro. Você também pode usar o controle do sistema SYSTEM e procurar em Extended Properties / Environment :

    
por 15.10.2014 / 15:29
0

Axel está correto.

setx armazena a variável no registro, mas a alteração não é refletida no ambiente de QUALQUER programa em execução (incluindo o atual).

Aqui estão algumas partes relevantes da saída de setx /? :

C:\>setx /?

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session. 
    
por 09.07.2016 / 11:43