2 votes

Définition des variables d'environnement et ajout au %PATH% système avec un fichier de commandes Windows

Je suis en train d'essayer de définir trois variables d'environnement et de les ajouter au chemin de la machine. Pour l'instant, mon code est comme ceci :

setx CATALINA_HOME "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7" /m
setx JRE_HOME "C:\Program Files (x86)\Java\jre7" /m
setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
setx PATH "%PATH%;%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;" /m

Les trois premières lignes, lorsqu'elles sont exécutées individuellement, fonctionnent bien pour ajouter la variable. Cependant, la dernière ligne entraîne la suppression d'une partie du chemin d'origine et aucune des variables supplémentaires n'est ajoutée.

Mon résultat souhaité serait l'ajout des trois variables et que le chemin global soit

[original path];%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;

1voto

Scott Points 20468

Une partie de votre problème est que SETX n'est pas SET –– après avoir fait

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m

…, %JAVA_HOME% n'est pas défini dans cette instance de l'invite de commandes. Vous devriez démarrer une nouvelle instance pour obtenir %JAVA_HOME%, et. al., défini. Je vous suggère de faire quelque chose comme

set  JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_21
setx JAVA_HOME "%JAVA_HOME%" /m

Je ne vois pas pourquoi vous voudriez supprimer une partie du chemin d'origine. Accéder/modifier la variable de chemin utilisateur, pas le chemin du système peut être pertinent. Et vous pourriez vouloir faire

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path

pour obtenir la partie système de la variable PATH, en excluant la partie utilisateur.

0voto

wendy.krieger Points 718

Si vous utilisez %var%, il est développé à l'utilisation. Si vous voulez définir une variable pour inclure %var%, vous devez écrire %%var%%.

Notez également que les paramètres du registre ne sont pas visibles par le processus en cours, mais le sont uniquement par les nouveaux processus. Dans WinPE, ces paramètres du registre ne sont jamais transmis aux nouveaux processus, mais l'environnement cmd reçoit l'environnement de l'explorateur, pas le registre. Pour cette raison, les gens ont écrit des utilitaires qui manipulent différents environnements.

Si vous voulez lire le registre dans la session cmd actuelle, vous pourriez avoir besoin de quelque chose comme conset.exe de Frank Westlake.

0voto

Catch22 Points 1

J'ai trouvé que placer l'interrupteur /M tôt fait l'affaire, même s'ils veulent que vous le placiez à la fin.

Donc par exemple, cela fonctionne :

setx /M PATH "%PATH%;C:\AddYourPathHere"

Mais cela ne fonctionne pas :

setx PATH "%PATH%;C:\AddYourPathHere" /M

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X