ti-enxame.com

Adicionando diretório à variável de ambiente PATH no Windows

Eu estou tentando adicionar C:\xampp\php ao meu sistema PATH variável de ambiente no Windows.

Eu já adicionei-o usando a caixa de diálogo Variáveis ​​de ambiente.

Mas quando eu digito no meu console:

C:\>path

não mostra o novo diretório C:\xampp\php:

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

Eu tenho duas perguntas:

  1. Por quê isso aconteceu? Há algo que eu fiz de errado?
  2. Além disso, como adiciono diretórios à minha variável PATH usando o console (e programaticamente, com um arquivo em lotes)?
433
Mp de la Vega

Isso só modifica o registro. Um processo existente não usará esses valores. Um novo processo fará isso se for iniciado depois essa alteração e não herda o ambiente antigo de seu pai.

Você não especificou como iniciou a sessão do console. A melhor maneira de garantir isso é sair do comando Shell e executá-lo novamente. Ele deve então herdar o PATH atualizado.

120
Hans Passant

Opção 1

Depois de alterar PATH com a GUI, feche e reabra a janela do console.

Isso funciona porque somente os programas iniciados após a mudança verão a nova PATH.

Opção 2

Execute este comando na janela de comando que você abriu:

set PATH=%PATH%;C:\your\path\here\

Este comando acrescenta C:\your\path\here\ à PATH atual.

Quebrando:

  • set - Um comando que altera as variáveis ​​de ambiente do cmd somente para a sessão cmd atual; outros programas e o sistema não são afetados.
  • PATH= - Significa que PATH é a variável de ambiente a ser temporariamente alterada.
  • %PATH%;C:\your\path\here\ - A parte %PATH% é expandida para o valor atual de PATH e ;C:\your\path\here\ é então concatenada a ela. Isso se torna a nova PATH.
847
JimR

WARNING: Esta solução pode ser destrutiva para o seu PATH, e a estabilidade do seu sistema. Como um efeito colateral, ele irá mesclar seu usuário e sistema PATH e truncar PATH para 1024 caracteres. O efeito desse comando é irreversível. Faça um backup do PATH primeiro. Veja os comentários para mais informações.

Não copie e cole cegamente isso. Use com cuidado.

Você pode permanentemente adicionar um caminho para PATH com o comando setx :

setx /M path "%path%;C:\your\path\here\"

Remova o sinalizador /M se você quiser definir o usuário PATH em vez do sistema PATH.

Notas:

  • O comando setx só está disponível no Windows 7 e posterior.
  • Você deve executar este comando a partir de um prompt de comando elevado.

  • Se você quiser apenas alterá-lo para a sessão atual, use set .

169
Nafscript

Você não precisa de nenhum comando set ou setx, simplesmente abra o terminal e digite:

PATH

Isso mostra o valor atual da variável PATH. Agora você deseja adicionar o diretório a ele? Simplesmente digite:

PATH %PATH%;C:\xampp\php

Se, por algum motivo, você desejar limpar a variável PATH (nenhum caminho ou excluir todos os caminhos), digite:

PATH ;

Atualizar

Como Danial Wilson observou no comentário abaixo, ele define o caminho apenas na sessão atual. Para definir o caminho permanentemente use setx mas esteja ciente, embora isso defina o caminho permanentemente, mas NÃO na sessão atual, então você precisa iniciar uma nova linha de comando para ver as alterações, mais info here .

Para verificar se existe uma variável ambiental ou ver seu valor use o ECHO commnad:

echo %YOUR_ENV_VARIABLE%
56
zar

Nesta era do PowerShell, eu editaria o PATH assim:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

Para definir a variável para todos os usuários, em toda a máquina, a última linha deve ser como:

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

Em um script do PowerShell, você pode querer verificar a presença de seu C:\xampp\php antes de adicionar ao PATH (no caso de ter sido adicionado anteriormente). Você pode envolvê-lo em uma condicional if

Então, juntando tudo:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}
32
Ifedi Okonkwo

Mais seguro SETX

Acene para todos os comentários sobre a resposta SETX inicial de @ Nafscript .

  • SETX por padrão atualizará seu caminho user.
  • SETX ... /M atualizará seu caminho system.
  • %PATH% contém o caminho do sistema com o caminho do usuário anexado

Avisos

  1. Backup your PATH - SETX truncará seu lixo por mais de 1024 caracteres
  2. Não chame SETX %PATH%;xxx - adiciona caminho do sistema ao caminho do usuário
  3. Não chame SETX %PATH%;xxx /M - adiciona caminho do usuário ao caminho do sistema
  4. O uso excessivo de arquivos em lote pode causar cegueira1

A página ss64 SETX tem alguns exemplos muito bons. É importante destacar que as chaves de registro são para SETX vs SETX /M

Variáveis ​​do usuário: 

HKCU\Environment

Variáveis ​​do sistema: 

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Instruções de uso

Anexar ao usuário PATH

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

Anexar ao sistema PATH

append_system_path.cmd. Deve ser executado como admin.

(é basicamente o mesmo, exceto com um diferente Key e o modificador SETX /M)

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

Alternativas

Finalmente, há potencialmente uma versão melhorada chamada SETENV recomendada pela página ss64 SETX que divide a configuração das variáveis ​​de ambiente do usuário ou do sistema.


1. Não é estritamente verdade

26
icc97

Tarde para a festa - mas útil se você já estiver no diretório que deseja adicionar ao PATH.

set PATH=%PATH%;%CD%

editar: como por comentário - funciona com janelas padrão cmd mas não no powershell.

Para o powershell, o equivalente %CD% é [System.Environment]::CurrentDirectory

23
nclord

E se você digitar errado o caminho usando o setx? A melhor maneira é simplesmente através das janelas U.I. Painel de Controle-> Todos os Itens do Painel de Controle-> Sistema-> Configurações Avançadas do Sistema-> Variáveis ​​de Ambiente

Role para baixo até Caminho e selecione Editar. Você também pode copiá-lo e colá-lo em seu editor favorito para poder ver todo o caminho e editá-lo com mais facilidade.

19
Thomas Fonseca
  • as mudanças na linha de comando não serão permanentes, serão perdidas quando o console for fechado.
  • Caminho funciona como primeiro vem primeiro a ser servido. 
  • Você pode querer substituir outros executáveis ​​já incluídos. Por exemplo, se você já tiver outra versão em seu caminho e quiser adicionar uma versão diferente sem fazer uma alteração permanente no caminho, deverá colocar o diretório no início do comando.

Para substituir executáveis ​​já incluídos; 

set PATH = C:\xampp\php;% PATH%;

3
hevi

Além de todas as respostas, se você quiser uma ferramenta GUI legal para editar suas variáveis ​​de ambiente do Windows, você pode usar Rapid Environment Editor

tente! É seguro usar e incrível!

http://www.rapidee.com/en/

2
Mp de la Vega

Verificando as sugestões acima no Windows 10 LTSB e com um vislumbre dos contornos de "ajuda" (que podem ser visualizados ao digitar 'command /?' No cmd), levei-me à conclusão De que o comando PATH altera a variável de ambiente do sistema Valores de caminho apenas para a sessão atual, mas após a reinicialização, todos os valores são redefinidos para seu padrão - exatamente como eram antes de usar o comando PATH.

Por outro lado, usando o comando SETX com privilégios administrativos é muito mais poderoso, ele altera esses valores para sempre (ou pelo menos até a próxima vez que este comando for usado ou até a próxima vez que esses valores forem manualmente manipulados pela GUI ...).

Mas por uma questão de clareza eu pensei que compartilhar aqui o melhor uso de sintaxe SETX Que funcionou para mim pode ajudar alguém um dia:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

onde qualquer sinal de igual '=' deve ser evitado, e não se preocupe com espaços ! não há necessidade de inserir mais aspas para um caminho que contenha espaços dentro dele - o sinal de divisão ';' faça o trabalho.

A palavra-chave PATH que segue o SETX define qual conjunto de valores deve ser alterado entre os valores possíveis de Variáveis ​​de Ambiente do Sistema e o% PATH% (o CAMINHO do Word cercado pelo sinal de porcentagem) dentro das aspas, instrui o SO a deixar o existente PATH os valores como estão e adicione o seguinte caminho (aquele que segue o sinal de divisão ';') para os valores existentes.

HTH

1
such_ke_nasdeeq

Em relação ao ponto 2 Eu estou usando um arquivo em lotes simples que está preenchendo PATH ou outras variáveis ​​de ambiente para mim. Portanto, não há poluição de variáveis ​​de ambiente por padrão. Esse arquivo em lote pode ser acessado de qualquer lugar para que eu possa digitar:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php
1
Grzegorz Gajos

Em um comando Prompt, você diz ao Cmd para usar a linha de comando do Explorer, precedendo-a com start.

Então, start Yourbatchname.

Observe que você precisa se registrar como se o nome fosse batchfile.exe.

Programas e documentos podem ser adicionados ao registro, portanto, digitar seu nome sem o caminho na caixa de diálogo Iniciar - Executar ou atalho permite que o Windows os localize.

Este é um arquivo reg genérico. Copie as linhas abaixo para um novo documento de texto e salve-o como anyname.reg. Edite-o com seus programas ou documentos.

Nos caminhos, use\para separar nomes de pastas em caminhos-chave, pois o regedit usa um único\para separar seus nomes-chave. Todos os arquivos reg começam com REGEDIT4. Um ponto e vírgula transforma uma linha em um comentário. O símbolo @ significa atribuir o valor à chave em vez de um valor nomeado.

O arquivo não precisa existir. Isso pode ser usado para definir o Word.exe para abrir o Winword.exe.

Digitar start batchfile iniciará o iexplore.exe.

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the Shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

Você já foi informado sobre o caminho em outra resposta. Veja também doskey /? para macros cmd (elas só funcionam ao digitar).

Você pode executar comandos de inicialização para o CMD. De referência técnica do Windows Recource Kit

AutoRun  

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

Descrição

Contém comandos que são executados toda vez que você inicia o Cmd.exe.

0
user6017774

use caminho de gtools

ele faz as coisas de uma forma intuitiva, por exemplo:

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

e mostra resultados sem a necessidade de gerar um novo cmd !

0
womd

Uma alternativa melhor para o Painel de Controle é usar este programa freeware do sourceforge chamado Pathenator:

https://sourceforge.net/projects/pathenator/

No entanto, apenas os trabalhadores para o sistema que tem Dot.Net 4.0 ou superior, como o Windows 7,8 ou 10.

0
Bill Moore

Se você executar o comando cmd, ele atualizará todas as variáveis ​​do sistema para essa janela de comando.

0
RBXII3