J'ai une variable PATH système avec la configuration de niveau système. J'utilise la variable PATH utilisateur pour compléter le PATH avec une configuration spécifique à l'utilisateur.
Je voudrais mettre à jour la variable PATH utilisateur depuis la ligne de commande par exemple avec setx.
Mais je ne sais pas comment référencer le chemin utilisateur existant dans setx.
Dans la commande suivante (setx sans / M)
setx PATH c:\my-user-specifc-bin-path;%PATH%
le premier CHEMIN signifie le CHEMIN de l'utilisateur mais le second% PATH% sera remplacé par le CHEMIN "complet" (utilisateur + système).
Cela signifie donc que tout le chemin du système serait dupliqué dans le CHEMIN de l'utilisateur ... ce qui n'est définitivement pas ce que je veux.
J'aimerais:
- N'affecte que la variable d'environnement PATH utilisateur
- Ajouter / ajouter un ou plusieurs éléments de chemin à la valeur existante
- Faites-le à partir de la ligne de commande.
windows
command-line
path
environment-variables
Christian Lemer
la source
la source
;%PATH%
vous demandez que le chemin existant (dérivé du chemin système) soit ajouté.Réponses:
Version PowerShell, définissez PATH pour l'utilisateur:
la source
Pour définir le PATH utilisateur écrasant toute valeur précédente:
Pour ajouter une valeur "C: \ MyPath0" au chemin utilisateur existant:
Pour ajouter une valeur "C: \ MyPath2" au chemin utilisateur existant:
La condition if-else est requise car le CHEMIN utilisateur peut contenir ou non des espaces. Si vous le souhaitez, vous pouvez enregistrer les commandes sous forme de fichiers batch génériques (assurez-vous de doubler chaque signe%) qui acceptent la valeur à définir / ajouter / ajouter comme argument.
Fichier batch
la source
for /?
vous dira tout ce que vous devez savoir. :) Je ne voulais pas tout reproduire ici inutilement et je pensais que les informations seraient faciles à comprendre de toute façon.PATH
se termine déjà par un point-virgule, auquel cas l'ajout du répertoire passé doit être effectué sans point-virgule supplémentaire. Mais le plus gros problème avec ce code est une corruption de l' utilisateurPATH
si la chaîne dépasse 1 024 caractères en raison de lasetx
tronquer à 1 024 caractères avec l'affichage des informations appropriées avant de l'ajouter au registre Windows. Il peut donc arriver qu'au lieu d'ajouter un répertoire passé, l' utilisateur existantPATH
soit tronqué (tronqué) par ce code.besoin
SETX /M
, valeur par défautSETX
définie surHKEY_CURRENT_USER
la source
Cela semble fonctionner:
la source
PATH
utilisant localPATH
. Cette ligne de commande corrompt vraiment l' utilisateurPATH
en ajoutant au registre Windows pour l' utilisateurPATH
la chaînec:\my-user-specifc-bin-path-which-may-contain-spaces;%C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%
dans le meilleur des cas. Toute personne utilisant cette ligne de commande a réussi à corrompre le paramètre utilisateurPATH
et donc localPATH
tel qu'utilisé par tous les processus exécutés avec le compte utilisateur actuel après le redémarrage de Windows ou la déconnexion / la connexion.