Eu tenho uma variável PATH do sistema com a configuração no nível do sistema. Eu uso a variável PATH do usuário para complementar o PATH com a configuração específica do usuário.
Gostaria de atualizar a variável PATH do usuário na linha de comando, por exemplo, com setx.
Mas não sei como referenciar o caminho do usuário existente no setx.
No seguinte comando (setx sem / M)
setx PATH c:\my-user-specifc-bin-path;%PATH%
o primeiro PATH significa o caminho do usuário, mas o segundo% PATH% será substituído pelo caminho "completo" (usuário + sistema).
Então isso significa que todo o caminho do sistema seria duplicado no PATH do usuário ... o que definitivamente não é o que eu quero.
Eu gostaria de:
- Afeta apenas a variável de ambiente PATH do usuário
- Anexar / Anexar um ou mais elementos do caminho ao valor existente
- Faça isso na linha de comando.
windows
command-line
path
environment-variables
Christian Lemer
fonte
fonte
;%PATH%
está solicitando que o caminho existente (derivado do caminho do sistema) seja anexado.Respostas:
Versão do PowerShell, defina PATH para o usuário:
fonte
Para definir o PATH do usuário substituindo qualquer valor anterior:
Para acrescentar um valor "C: \ MyPath0" ao PATH do usuário existente:
Para acrescentar um valor "C: \ MyPath2" ao PATH do Usuário existente:
A condição if-else é necessária porque o PATH do usuário pode ou não conter espaços. Se desejar, você pode salvar os comandos como arquivos em lote genéricos (certifique-se de duplicar cada sinal de%) que aceitam o valor a ser definido / anexado / anexado como argumento.
Arquivo em lote
fonte
for /?
dirá tudo o que você precisa saber. :) Eu não queria replicar tudo aqui desnecessariamente e pensei que seria fácil descobrir informações de qualquer maneira.PATH
já termina com um ponto e vírgula; nesse caso, o diretório passado anexado deve ser feito sem um ponto e vírgula adicional. Mas o maior problema com esse código é a corrupção do usuárioPATH
se a cadeia de caracteres tiver mais de 1024 caracteres devido aosetx
truncamento da cadeia para 1024 caracteres, exibindo as informações apropriadas antes de adicioná-las ao registro do Windows. Portanto, pode acontecer que, em vez de anexar o diretório passado, o usuário existentePATH
seja truncado (ilegível) por esse código.necessário
SETX /M
, padrãoSETX
definido comoHKEY_CURRENT_USER
fonte
Isso parece funcionar:
fonte
PATH
usando localPATH
. Essa linha de comando realmente corrompe o usuárioPATH
adicionando ao registro do Windows para o usuárioPATH
a stringc:\my-user-specifc-bin-path-which-may-contain-spaces;%C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%
na melhor das hipóteses. Todos que usam essa linha de comando corromperam com êxito a configuração do usuárioPATH
e, portanto, local,PATH
conforme usado por todos os processos em execução com a conta de usuário atual após a reinicialização do Windows ou o logoff / logon.