web-dev-qa-db-fra.com

Invite de commandes - Comment ajouter un chemin d'accès uniquement à l'exécution du fichier de commandes?

En gros, je sais que je peux passer par mon panneau de configuration et modifier la variable de chemin. Mais, je me demande s’il existe un moyen de programmer par lots un chemin temporaire inclus? De cette façon, il n’est utilisé que pendant l’exécution du fichier de commandes. Je ne veux pas que les gens entrent et modifient leurs variables de chemin simplement pour utiliser mon fichier de commandes.

161
michael

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é en premier, vérifiez si le nouveau chemin existe en premier:

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

Si vous souhaitez que cela soit local pour ce fichier de commandes, utilisez setlocal :

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

@REM Rest of your script

Lisez attentivement la documentation pour setlocal/endlocal et examinez les autres références de ce site - Fonctions est également très intéressant et la syntaxe est délicate.

La page Syntaxe devrait vous aider à démarrer avec les bases.

276
Mat

C'est vrai, mais cela ne le change pas en permanence, mais juste pour l'invite de commande en cours, si vous voulez le changer en permanence, vous devez utiliser par exemple ceci:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Cela le changera de façon permanente et oui, vous pourrez le remplacer par un autre script batch.

17
dumbak

Il y a un détail important:

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

ne fonctionne pas, alors que

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

travaux. La différence est les citations!

14