Invite de commande - comment ajouter un chemin d'accès défini uniquement pour ce fichier batch en cours d'exécution?

Fondamentalement, je sais que je peux passer par mon panneau de contrôle et modifier la variable path. Mais, je me demande s'il y a un moyen de via la programmation par lots ont un chemin temporaire inclus? De cette façon, il n'est utilisé que pendant l'exécution de ce fichier batch. Je ne veux pas que les gens entrent et modifient leurs variables de chemin juste pour utiliser mon fichier batch.

136
demandé sur michael 2011-07-26 19:24:26

3 réponses

, tout 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 voulez que locale que fichier de commandes, utilisez setlocal:

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

@REM Rest of your script

Lisez attentivement les documents pour setlocal/endlocal , et jetez un oeil aux autres références sur ce site - Functions est assez intéressant aussi et la syntaxe est délicate.

Le syntaxe page devrait vous aider à démarrer avec les bases.

230
répondu Mat 2014-12-10 17:31:09

C'est vrai, mais il ne le change pas définitivement, mais juste pour l'invite de commande actuelle, si vous voulez le changer définitivement, vous devez utiliser par exemple ceci:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Cela le changera définitivement et oui vous pouvez l'écraser par un autre script batch.

16
répondu dumbak 2013-10-16 06:40:56

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%

Fonctionne. La différence est les citations!

11
répondu 18446744073709551615 2017-07-03 12:37:50