web-dev-qa-db-fra.com

Comment définir des variables d'environnement pour une seule commande sous Windows?

Existe-t-il un moyen de définir des variables d’environnement pour une commande unique sous Windows telle que ENVVAR=abc command sous Unix?

Les variables définies par la commande set sous Windows semblent rester pour les commandes suivantes, mais ce n'est pas ce que je veux.

16
谷口昂平

Est-il possible de définir des variables d'environnement pour une seule commande?

À partir de la cmd shell actuelle:

Vous devez effacer la variable vous-même.

set ENVVAR=abc && dir & set ENVVAR=

À partir d'un fichier de commandes:

Vous pouvez utiliser setlocal et endlocal.

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal

Utilisez un enfant cmd Shell:

Vous pouvez utiliser cmd /c pour créer un shell enfant.

La variable est définie dans le shell enfant et n'affecte pas le shell parent (comme indiqué dans un commentaire par jpmc26 ).

cmd /C "set ENVVAR=abc && dir"

Lectures complémentaires

  • Index A-Z de la ligne de commande Windows CMD - Une excellente référence pour tout ce qui concerne la ligne de commande cmd de Windows.
  • cmd - Démarre un nouveau shell CMD et (éventuellement) exécute une commande/un programme exécutable.
  • endlocal - Met fin à la localisation des modifications de l'environnement dans un fichier de traitement par lots. Passer des variables d'un fichier batch à un autre.
  • redirection - Opérateurs de redirection.
  • set - Afficher, définir ou supprimer des variables d'environnement CMD. Les modifications effectuées avec SET ne resteront que pour la durée de la session CMD en cours.
  • setlocal - Définit les options permettant de contrôler la visibilité des variables d'environnement dans un fichier de traitement par lots.
22
DavidPostill