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

Nos sistemas operacionais Windows NT, tentei adicionar esse diretório à variável de ambiente PATH meu sistema:

 C:\xampp\php 

Então eu adicionei o diretório por “Meu Computador”> “Propriedades”> “Avançado”> “Variáveis ​​de Ambiente”> “Caminho”. Eu salvei, mas quando eu digitei:

 > path 

no meu console, ele não mostra nenhum diretório “C: \ xampp \ php” adicionado

 > 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 > Fil es\Microsoft SQL Server\90\Tools\binn\;C:\Program > Files\QuickTime\QTSystem\;D:\P rogram Files\TortoiseSVN\bin;D:\Program > Files\Bazaar;C:\Program Files\Android\an droid-sdk\tools;D:\Program > Files\Microsoft Visual Studio\Common\Tools\WinNT;D:\P rogram > Files\Microsoft Visual Studio\Common\MSDev98\Bin;D:\Program > Files\Microso ft 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. Como posso adicionar diretórios na minha variável PATH usando o console ou programaticamente (através de um arquivo de lote)?

Isso só modifica o registro. Um processo não usará esses valores até que seja iniciado após essa alteração e não herde o ambiente de seu pai.

Você não especificou como iniciou a session do console. A melhor maneira de garantir isso é fazer logout e efetuar login novamente.

  • Abra a janela do console depois de alterar o caminho do sistema por meio do painel de controle ou das configurações do sistema.

Ou

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

    na janela de comando você abriu.

    Quebrando:

     set PATH=%PATH%; -- takes the current path and sets PATH to it. C:\xampp\php -- Adds this directory to the path, because of 'set PATH' this is added to the path 

Aviso: não pule a criação de um backup antes de usar este método
Você pode perder dados em seu %PATH% ou adicionar conteúdo irrelevante mesclado de variables ​​do sistema
Em outras palavras, não copie / cole cegamente isso. Use com cuidado.


No Windows 7 e no Windows 8, podemos definir permanentemente o caminho a partir da linha de comando usando o comando setx . Para adicionar o git a “PATH”:

 setx path "%path%;C:\Program Files (x86)\Git\bin\" 

Note que este comando pode truncar o caminho que você passa para 1024 caracteres, perdendo qualquer coisa além disso. Em geral, certifique-se de usar cmd.exe e não command.com . Ambos fornecem a linha de comando. cmd.exe é mais recente e tem menos restrições. command.com é mais antigo; tem limites como o tamanho do caminho.

Na família Windows 8 (8 e 8.1), você deve executar o Prompt de Comando com privilégios de administrador.

Edit: Como comentado por @FF_Dev

Devido ao uso da variável %PATH% , esse comando mesclará as variables ​​de ambiente do sistema com as variables ​​do usuário.

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 session atual. Para definir o caminho permanentemente use setx mas esteja ciente, embora isso defina o caminho permanentemente, mas não na session atual, então você tem que iniciar uma nova linha de comando para ver as alterações, mais informações aqui .

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

 echo %YOUR_ENV_VARIABLE% 

Nesta época 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 um if condicional.

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") } 

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 PowerShell, o equivalente a %CD% é [System.Environment]::CurrentDirectory

Mais seguro SETX

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

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

Avisos

  1. Backup de seu PATHSETX 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. Uso excessivo de arquivos em lote pode causar cegueira 1

A página ss64 SETX tem alguns exemplos muito bons. É importante ressaltar 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 caminho do usuário

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 caminho do sistema

append_system_path.cmd . Deve ser executado como administrador.

(é basicamente o mesmo, exceto com uma Key diferente 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 aprimorada chamada SETENV, recomendada pela página ss64 SETX, que divide a configuração das variables ​​de ambiente do usuário ou do sistema.


1. Não é estritamente verdadeiro

E se você digitar errado o caminho usando setx? A melhor maneira é simplesmente através do Painel de Controle da interface do usuário do Windows-> 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.

Além de todas as respostas, se você quiser uma boa ferramenta GUI para editar suas variables ​​de ambiente do Windows, você pode usar o Rapid Environment Editor

tente! É seguro usar e incrível!

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

  • as alterações 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 replace 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 replace executáveis ​​já incluídos;

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

Em relação ao ponto 2 , estou usando um arquivo de lote simples que está preenchendo o PATH ou outras variables ​​de ambiente para mim. Portanto, não há poluição de variables ​​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 

Você pode conferir mais detalhes sobre essa abordagem simples aqui .

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), concluí que o comando PATH altera a variável de ambiente do sistema Valores de caminho apenas para a session atual, mas depois de reinicializar todos os valores redefinidos para o padrão – assim 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 syntax 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% (a palavra CAMINHO rodeada pelo sinal de porcentagem) dentro das aspas, instrui o SO a deixar o existente PATH valores como eles são e adicione o seguinte caminho (aquele que segue o sinal de divisão ‘;’) para os valores existentes.

HTH

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.

Em um prompt de comando, você diz ao Cmd para usar a linha de comando do Explorer, start com o start .

Então start Yourbatchname .

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

Programas e documentos podem ser adicionados ao registro, então digitar seu nome sem o caminho na checkbox de diálogo Iniciar – Executar ou atalho permite que o Windows os encontre.

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 irá iniciar o iexplore.exe.

 REGEDIT4 ;The bolded name below is the name of the document or program, . [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 boot 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.