Configurando variáveis de ambiente e anexando a% PATH% em todo o sistema com um arquivo em lotes do Windows

1

Estou tentando definir três variáveis de ambiente e anexá-las ao caminho da máquina. Agora meu código é assim:

setx CATALINA_HOME "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7" /m
setx JRE_HOME "C:\Program Files (x86)\Java\jre7" /m
setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
setx PATH "%PATH%;%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;" /m

Os três primeiros, quando executados sozinhos, funcionam bem para adicionar a variável. No entanto, a última linha está resultando na exclusão de parte do caminho original e nenhuma das variáveis adicionais anexadas.

Meu resultado desejado seria a adição das três variáveis e para o caminho do sistema ser

[original path];%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;
    
por user2596774 18.07.2013 / 21:29

3 respostas

1

Parte do seu problema é que SETX não é SET –– depois que você faz

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m

…, %JAVA_HOME% não está definido nessa instância do Prompt de Comando. Você teria que iniciar uma nova instância para obter %JAVA_HOME% , et. al., set. Eu sugiro que você faça algo como

set  JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_21
setx JAVA_HOME "%JAVA_HOME%" /m

Não vejo por que você estaria excluindo parte do caminho original. Acessar / modificar a variável do caminho do usuário, não o caminho do sistema pode ser relevante. E você pode querer fazer

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path

para obter a parte do sistema da variável PATH, excluindo a parte do usuário.

    
por 19.07.2013 / 01:39
0

Se você usar% var%, ele será expandido no momento do uso. Se você quer definir uma variável para incluir% var%, você precisa escrever %% var %%.

Observe também que as configurações do registro não são vistas pelo processo atual, mas são vistas apenas por novos processos. No winpe, essas configurações no registro nunca são passadas para novos processos, mas o ambiente cmd obtém o ambiente do explorador, não o registro. Por esta razão, as pessoas escreveram utilitários que tocam diferentes ambientes.

Se você quiser ler o registro para a sessão cmd atual, você pode precisar de algo como o conset.exe de Frank Westlake.

    
por 19.05.2014 / 02:49
0

Descobri que colocar a opção /M no início é suficiente, embora eles queiram que você a coloque no final.

Então, por exemplo, isso funciona:

setx /M PATH "%PATH%;C:\AddYourPathHere"

Mas isso não acontece:

setx PATH "%PATH%;C:\AddYourPathHere" /M
    
por 11.05.2015 / 16:17