234 votes

Comment ajouter un chemin défini uniquement pour l'exécution de ce fichier batch ?

En fait, je sais que je peux passer par mon panneau de contrôle et modifier la variable du chemin. Mais, je me demande s'il y a un moyen d'inclure un chemin temporaire dans la programmation par lot ? De cette façon, il n'est utilisé que pendant l'exécution du fichier batch. Je ne veux pas que les utilisateurs modifient leurs variables de chemin d'accès pour pouvoir utiliser mon fichier batch.

389voto

Mat Points 104488

Comme toute autre variable d'environnement, avec SET :

SET PATH=%PATH%;c:\whatever\else

Si vous voulez avoir un petit contrôle de sécurité intégré, vérifiez d'abord si le nouveau chemin existe :

IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else

Si vous voulez que ce soit local à ce fichier batch, utilisez setlocal :

setlocal
set PATH=...
set OTHERTHING=...

@REM Rest of your script

Lisez attentivement les documents pour setlocal / endlocal et jetez un coup d'œil aux autres références sur ce site. Fonctions est également très intéressant et la syntaxe est délicate.

El Syntaxe devrait vous permettre de commencer par les bases.

5 votes

Si vous ajoutez un setlocal à votre fichier batch, le chemin n'est visible que dans le fichier

0 votes

Comment ajoutez-vous "setlocal" ? Est-ce que c'est à la place de "SET" ?

0 votes

@micheal : j'ai mis à jour ma réponse avec des liens. S'il vous plaît, lisez la documentation/les exemples/les tutoriels sur les scripts cmd. SET est vraiment quelque chose que vous devez connaître et comprendre avant de faire des scripts.

35voto

Il y a un détail important :

set PATH="C:\linutils;C:\wingit\bin;%PATH%"

ne fonctionne pas, tandis que

set PATH=C:\linutils;C:\wingit\bin;%PATH%

travaux. La différence, ce sont les citations !

UPD voir aussi le commentaire de venimus

23voto

Milos Kruml Points 90

C'est vrai, mais ça ne le change pas de façon permanente, mais juste pour l'invite de commande actuelle, si vous voulez le changer de façon permanente vous devez utiliser par exemple ceci :

setx ENV_VAR_NAME "DESIRED_PATH" /m

Cela le changera de façon permanente et oui vous pouvez l'écraser par un autre lot script.

0 votes

Peut-être /m doit être après setx ?

0 votes

Cela fonctionne de la même manière pour moi, mais ce Win Batch Scripting est une petite affaire inachevée de MS. Dans mon entreprise où nous avons tous les mêmes ordinateurs portables avec le même système, il n'y a pas de script universel pour le paramètre PATH et nous en maintenons 2 ou 3, donc ce qui fonctionne pour vous :)

0 votes

Merci pour la mise à jour. Dans Windows Server 2012, lorsque je mets /m à la fin, le DESIRED_PATH a été ajouté avec /m à la fin pour l'utilisateur actuel seulement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X