Як встановити змінні середовища для однієї команди в Windows? [дублікат]


22

Чи є спосіб встановити змінні середовища для однієї команди в Windows, як ENVVAR=abc commandна Unix?

Змінні, встановлені setкомандою в Windows, здаються, залишаються для наступних команд, але це не те, що я хочу.


Я думаю, вам доведеться зняти їх самостійно.
Зіна

Відповіді:


29

Чи є спосіб встановити змінні середовища для однієї команди?

З поточної cmdоболонки:

Ви повинні очистити змінну самостійно.

set ENVVAR=abc && dir & set ENVVAR=

З пакетного файлу:

Ви можете використовувати setlocalі endlocal.

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

Використовуйте дочірню cmdоболонку:

Ви можете використовувати cmd /cдля створення дочірньої оболонки.

Змінна встановлюється в дочірній оболонці і не впливає на батьківську оболонку (як зазначено в коментарі jpmc26 ).

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

Подальше читання

  • Індекс AZ командного рядка Windows CMD - відмінна довідка для всіх речей, що стосуються cmd-рядка Windows.
  • cmd - запустити нову оболонку CMD та (за бажанням) запустити командно-виконувану програму.
  • endlocal - Закінчення локалізації змін середовища в пакетному файлі. Передача змінних з одного пакетного файлу в інший.
  • перенаправлення - оператори перенаправлення.
  • set - відображення, встановлення або видалення змінних середовища CMD. Зміни, внесені за допомогою SET, залишаться лише протягом тривалого сеансу CMD.
  • setlocal - Встановіть параметри для керування видимістю змінних середовища у пакетному файлі.

Інший варіант - запустити окремий cmdпроцес і встановити їх там. Наприклад, cmd /C "set ENVVAR=abc && dir". Оскільки це не вплине на батьківський процес, він буде ефективно "очищений" при виході.
jpmc26

@ jpmc26 Хороший. Дякую. Додано для відповіді.
DavidPostill

Цей перший метод не очистить змінну, якщо команда не вдасться.
ніхто

@AndrewMedico Дякую Гарна думка. Відповідь фіксована.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.