J'essaie de définir la variable d'environnement PATH dans Windows 7 en utilisant un fichier bat; mais cela ne semble pas fonctionner.
J'utilise cette commande Windows:
set PATH=%cd%;%path%
pause
Cependant, il ne semble être valide que pour cette instance cmd. Je veux que ce soit permanent, car j'ai d'abord défini le PATH puis exécuté un programme qui doit localiser les bibliothèques dans ce dossier.
Utilisez setx.exe au lieu de set.
setx PATH "%cd%;%path%;"
pause
Notez que cela définit le chemin d'accès pour toutes les futures instances de cmd, mais pas pour l'instance actuelle. Si vous en avez besoin, exécutez également votre commande set d'origine.
MISE À JOUR: Le deuxième paramètre doit être cité s'il contient des espaces (que% path% a toujours). Soyez averti que si le dernier caractère de votre% path% est une barre oblique inverse, il échappera à la citation de fin et la dernière entrée de chemin cessera de fonctionner. Je contourne cela en ajoutant un point-virgule avant la citation de clôture.
Si vous ne voulez pas risquer d'obtenir ";;;;;;" à la fin de votre chemin après des exécutions répétées, puis supprimez à la place toute barre oblique inverse de fin de la variable% path% avant de définir, et cela fonctionnera correctement.
Si vous souhaitez le faire dans un fichier de commandes, utilisez la commande reg pour modifier la valeur du chemin d'accès dans le Registre à la clé HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
Quelque chose comme:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
Vérifiez que le chemin d'accès dans la variable% path% correspond au chemin d'accès système.
Comme l'a noté wizlb, faire
setx PATH "%cd%;%path%;" -m
copiera env local vers system env, et sans -m il copiera system env vers user env. Ni l'un ni l'autre n'est souhaitable. Afin de modifier avec précision une seule partie du registre (système ou utilisateur, système dans mon exemple ci-dessous), vous devez procéder comme suit:
for /F "tokens=2* delims= " %%f IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx.exe PATH "%OLD_SYSTEM_PATH%;%OTHER_STUFF%;" -m
Le crédit pour la solution va à http://www.robvanderwoude.com/ntregistry.php
Pour le faire correctement, je pense que vous devez vraiment aller au-delà d'un simple fichier batch. --- documentation MSDN indique:
Pour ajouter ou modifier par programme des variables d'environnement système, ajoutez-les à la clé de registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment , puis diffusez une -
WM_SETTINGCHANGE
message avec lParam défini sur la chaîne "Environnement". Cela permet aux applications, telles que Shell, de récupérer vos mises à jour.
Tout d'abord, vous ne pourrez pas écrire sur cette clé sans invite d'élévation UAC. La meilleure solution consiste à ajouter le manifeste approprié à un fichier exécutable. Deuxièmement, la radiodiffusion WM_SETTINGCHANGE
n'est pas simple à partir d'un fichier batch.
À votre place, j'écrirais une application console courte et simple pour faire le travail.
Une solution simple (peut-être meilleure) consiste à utiliser PathMgr.cmd
Dans le chemin d'accèsmgr_1.0.2.Zip in https://gallery.technet.Microsoft.com/Batch-Script-To-Manage-7d0ef21e
Décompressez et placez le pathmgr.cmd dans le même dossier que votre fichier de commandes, puis dans votre fichier de commandes, écrivez ces deux lignes:
call pathmgr.cmd /del %cd% /y
call pathmgr.cmd /add %cd% /y
Cette volonté:
1) seulement mettre à jour la variable utilisateur PATH, 2) n'inclura pas le système PATH plusieurs fois
Vous pouvez également exécuter le fichier de commandes plusieurs fois, et il n'inclura votre chemin actuel UNE FOIS dans le CHEMIN.
En supposant que je souhaite créer une variable d'environnement système appelée "Zip_PROGRAM" et que je souhaite la pointer vers l'exécutable sur le chemin "reg add C:\Program Files\7-Zip\7z.exe
Je vais effectuer ce qui suit à l'invite DOS:
Étape 1: exécutez le code suivant reg ajoutez "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"/v Zip_PROGRAM/t REG_SZ/d "C:\Program Files\7-Zip\7z.exe"/f
Étape 2: Déconnexion puis connexion
Étape 3: Ouvrez l'invite DOS et exécutez: "set z" et vous devriez pouvoir voir la mise à jour de la variable d'environnement système
Utilisez cette commande setx PATH "% PATH%;% MVN_HOME%\bin \"
Quoi qu'il en soit, il ne sera pas défini dans la session en cours, vous devez utiliser
définir PATH = "% PATH%;% MVN_HOME%\bin \"