web-dev-qa-db-fra.com

Ajout d'un répertoire à la variable d'environnement PATH sous Windows

J'essaie d'ajouter C:\xampp\php à ma variable d'environnement système PATH sous Windows.

Je l'ai déjà ajouté à l'aide de la boîte de dialogue Variables d'environnement.

Mais quand je tape dans ma console:

C:\>path

il ne montre pas le nouveau répertoire 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

J'ai deux questions:

  1. Pourquoi est-ce arrivé? Y a-t-il quelque chose que j'ai fait de travers?
  2. Comment puis-je ajouter des répertoires à ma variable PATH à l'aide de la console (et par programme, avec un fichier de traitement par lots)?
433
Mp de la Vega

Cela ne modifie que le registre. Un processus existant n'utilisera pas ces valeurs. Un nouveau processus le fera s'il est lancé après cette modification et n'hérite pas de l'ancien environnement de son parent.

Vous n'avez pas précisé comment vous avez démarré la session de console. Le meilleur moyen de vous en assurer est de quitter la commande Shell et de l'exécuter à nouveau. Il devrait alors hériter du PATH mis à jour.

120
Hans Passant

Option 1

Après avoir modifié PATH avec l'interface graphique, fermez et rouvrez la fenêtre de la console.

Cela fonctionne car seuls les programmes lancés après le changement verront la nouvelle variable PATH.

Option 2

Exécutez cette commande dans la fenêtre de commande ouverte:

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

Cette commande ajoute C:\your\path\here\ à la PATH actuelle.

Le décomposer:

  • set - Une commande qui modifie les variables d'environnement de cmd uniquement pour la session cmd en cours; les autres programmes et le système ne sont pas affectés.
  • PATH= - signifie que PATH est la variable d'environnement à modifier temporairement.
  • %PATH%;C:\your\path\here\ - La partie %PATH% se développe à la valeur actuelle de PATH et ;C:\your\path\here\ lui est ensuite concaténée. Cela devient la nouvelle PATH.
847
JimR

ATTENTION: Cette solution peut être destructive pour votre PATH et pour la stabilité de votre système. Comme effet secondaire, il fusionnera votre PATH utilisateur et système, et tronquera PATH à 1024 caractères. L'effet de cette commande est irréversible. Faites d'abord une sauvegarde de PATH. Voir les commentaires pour plus d'informations.

Ne pas copier-coller aveuglément cela. Utiliser avec précaution.

Vous pouvez définitivement ajouter un chemin à PATH avec la commande setx :

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

Supprimez l'indicateur /M si vous souhaitez définir l'utilisateur PATH au lieu de la valeur système PATH.

Remarques:

  • La commande setx est uniquement disponible dans Windows 7 et versions ultérieures.
  • Vous devez exécuter cette commande à partir d'une invite de commande élevée.

  • Si vous voulez seulement le changer pour la session en cours, utilisez set .

169
Nafscript

Vous n'avez besoin d'aucune commande set ou setx, ouvrez simplement le terminal et tapez:

PATH

Ceci montre la valeur actuelle de la variable PATH. Maintenant, vous voulez ajouter un répertoire? Tapez simplement:

PATH %PATH%;C:\xampp\php

Si, pour une raison quelconque, vous souhaitez effacer la variable PATH (aucun chemin ou supprimer tous les chemins qu'elle contient), tapez:

PATH ;

Mettre à jour

Comme Danial Wilson a noté dans le commentaire ci-dessous, il définit le chemin uniquement dans la session en cours. Pour définir le chemin d'accès de façon permanente, utilisez setx mais soyez conscient, bien que cela définisse le chemin de manière permanente mais PAS dans la session en cours, vous devez donc démarrer une nouvelle ligne de commande pour voir les modifications, plus d'informations ici .

Pour vérifier si une variable d'environnement existe ou pour voir sa valeur, utilisez la commande ECHO:

echo %YOUR_ENV_VARIABLE%
56
zar

En cette ère de PowerShell, j'éditerais PATH comme suit:

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

Pour définir la variable pour tous les utilisateurs, à l'échelle de l'ordinateur, la dernière ligne doit ressembler à ceci:

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

Dans un script PowerShell, vous pouvez vérifier la présence de votre C:\xampp\php avant de l'ajouter à PATH (s'il a déjà été ajouté). Vous pouvez l'envelopper dans une condition if

Donc, tout mettre ensemble:

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

SETX plus sûr

Faites un clin d'œil à tous les commentaires sur la @ Nafscript @ SETX answer .

  • SETX par défaut mettra à jour votre chemin utilisateur.
  • SETX ... /M mettra à jour votre chemin system.
  • %PATH% contient le chemin du système avec le chemin de l'utilisateur ajouté

Avertissements

  1. Sauvegarder votre PATH - SETX tronquera votre courrier indésirable de plus de 1024 caractères
  2. Ne pas appeler SETX %PATH%;xxx - ajoute un chemin système dans le chemin utilisateur
  3. Ne pas appeler SETX %PATH%;xxx /M - ajoute un chemin d'utilisateur dans le chemin système
  4. L'utilisation excessive de fichiers de commandes peut provoquer la cécité1

La page ss64 SETX a de très bons exemples. Il est important de noter que cela indique où sont les clés de registre pour SETX vs SETX /M

Variables utilisateur: 

HKCU\Environment

Variables système: 

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

Instructions d'utilisation

Ajouter à l'utilisateur 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

Ajouter au système PATH

append_system_path.cmd. Doit être exécuté en tant qu'administrateur.

(c'est fondamentalement la même chose sauf avec un Key et un modificateur SETX /M différents)

@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

Des alternatives

Enfin, il existe potentiellement une version améliorée appelée SETENV recommandée par la page SETX de ss64 qui divise la définition des variables d’environnement utilisateur ou système.


1. Pas strictement vrai

26
icc97

En retard pour la fête - mais pratique si vous êtes déjà dans le répertoire que vous souhaitez ajouter à PATH.

set PATH=%PATH%;%CD%

edit: selon le commentaire - fonctionne avec les cmd standard de Windows mais pas avec PowerShell.

Pour Powershell, l'équivalent %CD% est [System.Environment]::CurrentDirectory

23
nclord

Que se passe-t-il si vous tapez le chemin à l'aide de setx? Le meilleur moyen est simplement de passer par les fenêtres U.I. Panneau de configuration-> Tous les éléments du panneau de configuration-> Système-> Réglages système avancés-> Variables d'environnement

Faites défiler jusqu’à Path et sélectionnez Edit. Vous pouvez également le copier et le coller dans votre éditeur favori afin de voir le chemin complet et de le modifier plus facilement.

19
Thomas Fonseca
  • les modifications de la ligne de commande ne seront pas permanentes, elles seront perdues à la fermeture de la console.
  • Path fonctionne comme le premier arrivé, premier servi. 
  • Vous voudrez peut-être remplacer d'autres exécutables déjà inclus. Par exemple, si vous avez déjà une autre version sur votre chemin et que vous souhaitez ajouter une version différente sans apporter de modification permanente au chemin, vous devez placer le répertoire au début de la commande.

Pour remplacer les exécutables déjà inclus; 

définir PATH = C:\xampp\php;% PATH%;

3
hevi

Outre toutes les réponses, vous pouvez utiliser Rapid Environment Editor si vous souhaitez qu'un outil graphique de Nice pour éditer vos variables d'environnement Windows.

l'essayer c'est sûr à utiliser et génial!

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

2
Mp de la Vega

Vérifier les suggestions ci-dessus sur Windows 10 LTSB, et avec un aperçu des contours de "l’aide" (visibles en tapant "commande /?" Sur la cmd), m’a amené à la conclusion que la commande PATH modifiait la variable d'environnement système Valeurs de chemin uniquement pour la session en cours, mais après le redémarrage, toutes les valeurs sont réinitialisées à leur valeur par défaut, exactement comme avant l'utilisation de la commande PATH.

D'autre part, utiliser la commande SETX avec des privilèges administratifs est beaucoup plus puissant, il change ces valeurs pour toujours (ou au moins jusqu'à la prochaine utilisation de cette commande ou jusqu'à la prochaine fois que ces valeurs seront manipulées manuellement par une interface graphique ...).

Mais par souci de clarté, j’ai pensé que partager ici la meilleure utilisation de la syntaxe SETX, qui fonctionnait pour moi, pourrait aider un jour un jour quelqu'un:

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

où tout signe égal '=' devrait être évité, et ne vous inquiétez pas pour les espaces! il n'est pas nécessaire d'insérer d'autres guillemets pour un chemin contenant des espaces à l'intérieur de celui-ci - le signe divisé ';' fait le travail.

Le mot clé PATH qui suit SETX définit l’ensemble de valeurs à modifier parmi les valeurs possibles des variables d’environnement système, et le% PATH% (le mot PATH entouré du signe de pourcentage) situé entre les guillemets, indique au système d’exploitation de laisser le Les valeurs PATH telles qu’elles sont et ajoutent le chemin suivant (celui qui suit le signe de division ';') aux valeurs existantes.

HTH

1
such_ke_nasdeeq

En ce qui concerne le point 2 j’utilise un simple fichier de commandes qui renseigne PATH ou d’autres variables d’environnement pour moi. Par conséquent, il n'y a pas de pollution des variables d'environnement par défaut. Ce fichier de commandes est accessible de partout afin que je puisse taper:

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

Dans une invite de commande, vous indiquez à Cmd d'utiliser la ligne de commande de l'explorateur en le préfixant avec start.

Alors start Yourbatchname.

Notez que vous devez vous enregistrer comme si son nom était batchfile.exe.

Des programmes et des documents peuvent être ajoutés à la base de registres. Taper leur nom sans chemin dans la boîte de dialogue Démarrer - Exécuter ou un raccourci permet à Windows de les trouver.

Ceci est un fichier reg générique. Copiez les lignes ci-dessous dans un nouveau document texte et enregistrez-le sous le nom anyname.reg. Modifiez-le avec vos programmes ou vos documents.

Dans les chemins, utilisez\pour séparer les noms de dossier dans les chemins de clé, car regedit utilise un seul\pour séparer ses noms de clé. Tous les fichiers reg commencent par REGEDIT4. Un point-virgule transforme une ligne en commentaire. Le symbole @ signifie assigner la valeur à la clé plutôt qu’une valeur nommée.

Le fichier ne doit pas exister. Cela peut être utilisé pour configurer Word.exe afin qu'il ouvre Winword.exe.

Taper start batchfile va démarrer 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\\"

On vous a déjà parlé du chemin dans une autre réponse. Voir aussi doskey /? pour les macros cmd (elles ne fonctionnent que lors de la frappe).

Vous pouvez exécuter des commandes de démarrage pour CMD. Référence technique du kit Windows Recource

AutoRun  

HKCU\Software\Microsoft\Command Processor 

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

La description

Contient des commandes qui sont exécutées chaque fois que vous démarrez Cmd.exe.

0
user6017774
  1. J'ai installé PHP à cette époque. Extrait php-7 ***. Zip dans C:\php \
  2. Sauvegardez ma variable d'environnement PATH actuelle: exécutez cmd et exécutez la commande: path >C:\path-backup.txt

  3. Récupère la valeur de mon chemin actuel dans le fichier C:\path.txt (de la même manière)

  4. Modifiez path.txt (bien sûr, ma longueur de chemin est supérieure à 1024 caractères, Windows est en cours d'exécution sur quelques années).
    • J'ai supprimé les chemins de doublons, comme 'C:\Windows; ou C:\Windows\System32; ou C:\Windows\System32\Wbem; - J'ai deux fois.
    • Supprimez également les chemins des programmes désinstallés. Exemple: C:\Program Files\NonExistSoftware;
    • De cette façon, ma longueur de chaîne de chemin <1024 :)))
    • à la fin du chemin, ajoutez: C:\php \
    • Copie valeur de chemin uniquement dans le tampon avec des guillemets doubles encadrés! Exemple: "C:\Windows; ****; C:\php \" Non CHEMIN = devrait être là!!!
  5. Ouvrez Windows PowerShell en tant qu'administrateur.
  6. Exécuter la commande:

setx path "Here you should insert string from buffer (new path value)"

  1. Réexécutez votre terminal (j'utilise "Gestionnaire distant") et vérifiez: php -v
0
Serb

utiliser depuis gtools

il fait les choses de manière intuitive, par exemple:

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

et affiche les résultats sans qu'il soit nécessaire de générer une nouvelle cmd !

0
womd

Une meilleure alternative au Panneau de configuration est d’utiliser ce programme gratuit de sourceforge appelé Pathenator:

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

Cependant, seuls les utilisateurs de systèmes dotés de Dot.Net 4.0 ou supérieur, tels que Windows 7,8 ou 10.

0
Bill Moore

Si vous exécutez la commande cmd, toutes les variables système de cette fenêtre de commande seront mises à jour.

0
RBXII3