Windows создать переменную среды cmd

Обновлено: 06.07.2024

Отображает, устанавливает или удаляет переменные среды cmd.exe. Если используется без параметров, Set отображает текущие параметры переменной среды.

Для этой команды требуются расширения команд, которые включены по умолчанию.

команда set также может запускаться из консоли восстановления Windows с использованием различных параметров. дополнительные сведения см. в разделе Windows среды восстановления (WinRE).

Синтаксис

Параметры

Комментарии

Если расширения команд включены (по умолчанию) и вы запускаете Set со значением, отображаются все переменные, которые начинаются с этого значения.

Символы < ,, > , | & и ^ являются специальными символами командной оболочки и перед ними должны начинаться escape-символом ( ^ ) или заключены в кавычки <string> (например, "стрингконтаининг & symbol"). Если строка, содержащая специальный символ, заключена в кавычки, кавычки необходимо указывать как часть значения переменной среды.

используйте переменные среды для управления поведением некоторых пакетных файлов и программ, а также для управления способом отображения Windows и работы подсистемы MS-DOS. Команда Set часто используется в файле Autoexec. NT для задания переменных среды.

Если вы используете команду Set без параметров, отображаются текущие параметры среды. Эти параметры обычно включают переменные среды ComSpec и path , которые используются для поиска программ на диске. в Windows используются две другие переменные среды: PROMPT и DIRCMD.

Если заданы значения для <variable> и <string> , указанное <variable> значение добавляется в среду и <string> связывается с этой переменной. Если переменная уже существует в среде, новое строковое значение заменяет старое.

Если указать только переменную и знак равенства (без <string> ) для команды <string> , <string> значение, связанное с переменной, будет очищаться (как если бы переменная отсутствует).

При использовании параметра /a поддерживаются следующие операторы в порядке убывания приоритета.

Если используются операторы логического ( && или || ) или модуля ( % ), заключите строку выражения в кавычки. Все нечисловые строки в выражении считаются именами переменных среды, и их значения преобразуются в числа до их обработки. Если указать имя переменной среды, которое не определено в текущей среде, то выделяется нулевое значение, что позволяет выполнять арифметические операции со значениями переменных среды без использования% для получения значения.

При запуске set/a из командной строки за пределами командного скрипта отображается конечное значение выражения.

Числовые значения — это десятичные числа, кроме префикса 0 × для шестнадцатеричных чисел или 0. Таким образом, 0 × 12 совпадает с 18, что совпадает с 022.

Отложенная поддержка расширения переменных среды по умолчанию отключена, но ее можно включить или отключить с помощью команды cmd/v.

При создании пакетных файлов можно использовать команду Set для создания переменных, а затем использовать их так же, как и пронумерованные переменные %0 – %9. Можно также использовать переменные %0 – %9 в качестве входных данных для Set.

При вызове значения переменной из пакетного файла заключите значение в знаки процента ( % ). Например, если программа пакетной службы создает переменную среды с именем бод, можно использовать строку, связанную с параметром бод , в качестве заменяемого параметра, введя % бод% в командной строке.

Примеры

Чтобы задать значение Test ^ 1 для переменной среды с именем , введите:

Команда Set назначает значение переменной всем, что следует за знаком равенства (=). Поэтому при вводе set testVar=test^1 вы получите следующий результат: testVar=test^1 .

Чтобы задать значение Test 1 для переменной среды testVar , введите:

Чтобы задать переменную среды с именем include , с которой связана строка к:\директори , введите:

Затем можно использовать строку к:\директори в пакетных файлах, заключив имя в символы процента ( ). Например, можно использовать dir %include% в пакетном файле для вывода содержимого каталога, связанного с переменной среды include. После обработки этой команды строка к:\директори заменяет % include%.

Чтобы использовать команду Set в пакетной программе для добавления нового каталога в переменную среды path , введите:

Чтобы отобразить список всех переменных среды, начинающихся с буквы P, введите:

Переменные среды, используемые в пакетных (командных) файлах, позволяют обходиться без указания абсолютных путей к директориям. Например, если нам заранее неизвестна буква системного диска, мы всегда можем использовать переменную %systemdrive%, возвращающую букву диска, на котором установлена ОС. Также, переменные применяются для оптимизации кода - многократно повторяющемуся параметру (например, разделе реестра) можно назначить короткую переменную и использовать ее. В данной статье подробно рассматриваются различные приемы работы с переменными, а также способы изменения и создания новых переменных. Теперь обо всем по порядку.

variables.jpg

Классификация переменных среды
Справка Windows различает два типа переменных среды: системные и локальные. Системные переменные возвращают одинаковые значения для всех пользователей. К примеру, %systemdrive% - буква системного диска, и она для всех пользователей одинакова. А вот значения, возвращаемые локальными переменными, варьируются в зависимости от вошедшего в систему пользователя. Например, %userprofile% может возвращать C:\Documents and Settings\ТекущийПользователь, где ТекущийПользователь - название учетной записи пользователя.

Узнать, какие переменные среды в операционной системе вам доступны и какие значения в данный момент им присвоены, вам поможет команда SET, запущенная из командной строки без параметров (Пуск – Выполнить – cmd – set). В рамках данной статьи нас интересуют переменные, обозначающие путь к различным папкам (каталогам). Чуть подробнее о некоторых из них ниже:

Переменная|Тип|Описание
%SYSTEMDRIVE%|Системная|Возвращает имя диска, содержащего корневой каталог операционной системы Windows XP /2003 (т. е. системный корневой каталог).
%SYSTEMROOT%, %WINDIR%|Системная|Возвращает размещение корневого каталога операционной системы Windows XP /2003
%PATH%|Системная|Указывает путь поиска для исполняемых файлов.
%PROGRAMFILES%|Системная|Указывает путь к каталогу установки программ (Program Files)
%COMMONPROGRAMFILES%|Системная|Указывает путь к общему каталогу программ (Program Files\Common Files).
%TEMP% и %TMP%|Системная и пользовательская|Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP.
%USERPROFILE%|Локальная|Возвращает размещение профиля для текущего пользователя.
%ALLUSERSPROFILE%|Локальная|Возвращает размещение профиля "All Users".
%CD%|Локальная|Возвращает путь к текущей папке.
%APPDATA%|Локальная|Возвращает используемое по умолчанию размещение данных приложений.

Использование переменных в пакетных файлах
Начнем с простенького примера:

В этом примере я удаляю вышеуказанные ярлыки, которые маячат перед глазами в меню Пуск, используя переменную %AllUsersProfile%, а также все файлы с расширением SCR из директории Windows\system32, используя переменную %SystemRoot%. Вместо DEL /F /Q, как вы понимаете, может быть все что угодно: от команды копирования COPY до команды запуска установки нужного нам приложения со всеми параметрами командной строки, если это потребуется.

Во всех командах я специально использовал "кавычки" – это не случайно. Весь путь, включая переменные, надо заключать в кавычки, если вы используете пути, содержащие пробелы. Даже если сама переменная кавычек не содержит, после ее разбора системой в пути могут появится пробелы (например, %ProgramFiles% в C:\Program Files). В любом случае кавычки лучше использовать – это является хорошим тоном оформления командных файлов.

Как задать свои переменные

Разобранный выше пример использовал уже существующие переменные среды. И вы, вероятно, обратили внимание на символы процентов, окружающие названия переменных. Эти символы нужны для того, чтобы разрешить подстановку значений переменной в командной строке или в пакетном файле. Символы процентов указывают на то, что Cmd.exe должна обратиться к значениям переменных, а не делать посимвольное сравнение. Ниже вы увидите, как это работает. Задать свои переменные в пакетном файле можно командой SET.

Команда SET
Вы можете задать в командном файле свои переменные при помощи все той же команды SET.

Чтобы добавить переменную, введите в командной строке:

Чтобы отобразить переменную, введите в командной строке:
Чтобы удалить переменную, введите в командной строке:

задает переменную mydir, которая будет возвращать путь к указанной папке. Подробнее о команде вы можете прочитать из set /?.

Важное примечание: переменные, задаваемые командой set, действуют лишь на протяжении командной сессии (см. ниже), в которой они были заданы.

Эти переменные могут быть созданы, к примеру, для любых путей, надо лишь задать или найти алгоритм присвоения переменной в каждой частной ситуации, пользуясь готовыми примерами или создавая свои на их основе. Как правило, такие переменные создаются в текущей сессии командными файлами с помощью некоторых операторов.

Пример назначения переменных в файле RunOnceEx.cmd, импортирующем параметры в реестр

В данном скрипте командой SET задаются две переменных - %i% и %KEY%. Обратите внимание, что задаются они без символов процентов, а вот для обращения к ним %% уже нужны. Переменная %KEY% служит для упрощения и оптимизации кода. Она остается неизменной на протяжении текущей командной сессии, что избавляет от необходимости каждый раз включать в код раздел реестра. Каждый раз, когда в коде встречается %KEY%, будет происходить ее замена на HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx. А вот %i% служит для последовательной нумерации разделов реестра. При начальном значении 100 переменная увеличивается на единицу при помощи команды SET /A i+=1 после каждого блока команд, что дает последовательность 100, 101, 102 и т.д. Таким образом, строка

на самом деле отработает так

Обратите внимание, что во фрагменте файла также используется системная переменная %systemdrive%, которая соответствует букве системного диска.

Пример назначения переменных в командном файле, устанавливающем приложение с CD:

В этом примере для всех перечисленных дисков происходит поиск определенного файла (WIN51). В случае его обнаружения на одном из дисков, последнему присваивается переменная %CDROM%, а далее уже происходит установка программного обеспечения с использованием пути, заданного созданной переменной.

Изменение переменных среды и добавление собственных переменных

Как уже было сказано выше, действие переменных, заданных командой set, ограничивается текущей командной сессией. Если вы хотите получить из временной переменной системную или пользовательскую, то надо ее прописать в реестр. Сделать это тоже можно различными способами.

Утилита setenv
Утилита работает из командной строки (сайт, загрузить). Работать с утилитой очень просто (setenv /?).


Пользовательские настройки|setenv -u имя_переменной значение
Системные настройки|setenv -m имя_переменной значение
Настройки Default User|setenv -d имя_переменной значение
Настройки текущего пользовательского сеанса|setenv -v имя_переменной значение

Допустим, если нужно получить переменную %temp% еще на стадии установки, то можно это проделать из cmdlines.txt, например:

Утилита удобна тем, что после задания переменной ею можно пользоваться сразу. Ну почти сразу - в следующей командной сессии. Чтобы использовать ее в текущей сессии, можно задействовать старую знакомую команду set:

Импорт параметров в реестр
Если же пойти путем внесения изменений в реестр после первого входа в систему, то переменные начнут "работать" только после перезагрузки или завершения пользовательского сеанса. Конечно, в процессе автоустановки можно импортировать желаемые параметры на Т-12 (см. статью Твики реестра) и обойти данную проблему. Если же вы не собираетесь использовать назначенную переменную в текущем пользовательском сеансе, то импорт в реестр вас тоже может устроить. Процесс импорта REG-файлов описывать повторно не буду, а рассмотрю команду REG ADD на конкретном примере.

Допустим, вы заинтересованы иметь в системе переменную %CDROM% на постоянной основе и установить ее в процессе установки приложений с CD. Следуя коду, приведенному выше, нужно после определения переменной назначить ее системной.

Терминология
Командная оболочка — это отдельный программный продукт, который обеспечивает прямую связь между пользователем и операционной системой. Текстовый пользовательский интерфейс командной строки предоставляет среду, в которой выполняются приложения и служебные программы с текстовым интерфейсом.

cmd.exe - интерпретатор команд, который командная оболочка ОС Windows использует для перевода введенной команды в формат, понятный системе.

Командная сессия может инициироваться как запуском cmd.exe, так и запуском пакетного файла. Иными словами создается текущая командная оболочка. Соответственно выход из этой оболочки (к примеру, окончание работы пакетного файла) завершает командную сессию.

Пользовательский сеанс (пользовательская сессия) начинается с момента входа пользователя в систему (log on) и завершается при выходе (log off).

environment variables windows

Операционные системы и Windows не исключение имеют в своем составе особый механизм хранения различной информации, называемый переменными. Кто знаком с программированием прекрасно понимает, что это. Остальные могут представить себе это в виде записи имя_переменной=значение переменной среды. Например, запись username=Vasya означает, что переменная с именем username содержит значение Vasya.

При этом подразумевается, что имя переменной неизменно, а значение может изменяться с течением времени. Представим себе, что в переменной username хранится имя текущего пользователя Windows. Когда мы вошли в систему под именем Vasya, то в username оказалось соответствующее значение, однако если мы сменим пользователя на Ivan, то и значение изменится и username будет равно Ivan. Из-за этой возможности изменяться их и называют переменными.

Они оказываются чрезвычайно полезными при создании скриптов, работе в командной строке и адресной строке Проводника. В основном они содержат информацию из разряда имя компьютера, имя пользователя, домашняя папка пользователя, каталог куда установлена ОС, архитектура процессора, папки для временных файлов и так далее.

Таким образом эта информация дает представление о текущем окружении, то есть описывает среду, в которой происходит выполнение программы, отсюда и получили свое название переменные среды (environment variables) или по-другому переменные окружения.

В чем их практический смысл? Представьте себе, что вы создаете командный файл, в котором используется путь к домашней папке пользователя, причем он должен работать на любом компьютере. Как его прописать, если имя учетной записи заранее не известно, да и расположение папки тоже? Конечно, его можно выяснить в недрах ОС, но гораздо проще и компактней просто написать %USERPROFILE%. Система сама заботится о правильном значении, поэтому в таком варианте скрипт будет корректно работать везде.

Вот другой пример. Если в адресную строку Проводника ввести %localappdata% и нажать Enter , то произойдет переход в папку, которую установленные программы используют для хранения своих локальных данных. Обычно это C:\Users\имя текущей учетной записи\AppData\Local в которую можно конечно перейти обычным способом, но учитывая, что AppData является скрытой, то данный способ может оказаться быстрее и проще. К тому же можно создавать собственные переменные среды на нужные папки.

Так же благодаря переменной path можно запускать программы без указания полных путей к исполняем файлам, что заметно упрощает использование компьютера.

Переменные среды Windows бывают нескольких видов:

  • Системные переменные — работают в пределах всего компьютера, хранятся в реестре в разделе HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
  • Пользовательские переменные — действуют только для конкретной учетной записи и находятся в реестре по адресу HKCU\Environment
  • Сессионные переменные — существуют только в пределах текущего сеанса окна командной строки.

Настройка переменных среды Windows

В операционной системе имеется заранее предопределенный набор переменных окружения Windows и можно создавать собственные. Для просмотра и управления ими можно воспользоваться графическим интерфейсом. В разных версиях Windows вид окон немного отличается, но принципиально все одинаково. Правда в Windows 10 управление реализовано более удобно, чем в 7 и более старых версиях.

Настройка переменных среды Windows в графическом интерфейсе

Чтобы иметь возможность просматривать и редактировать переменные окружения в Windows 10 нужно выполнить следующие действия.

Щелкнуть правой кнопкой мыши по иконке «Этот компьютер» на рабочем столе и выбрать в меню «Свойства» или набрать в поиске на панели задач «Панель управления». Затем в левом столбце нажать на «Дополнительные параметры системы». В новом окне на вкладке «Дополнительно» есть кнопка «Переменные среды». Альтернативный вариант нажать комбинацию клавиш WIN + R и ввести systempropertiesadvanced .

доступ к настройкам переменных среды в Windows 10

Окно управления состоит из двух частей. В верхней представлены пользовательские переменные, а в нижней системные. Здесь можно просмотреть существующие, а также отредактировать, удалить или создать новые воспользовавшись соответствующими кнопками.

окно настроек переменных среды Windows 10

Чтобы создать переменную окружения нажимаем кнопку «Создать» в нужной части окна и вводим ее имя, значение и затем OK. Можно воспользоваться кнопкой «Обзор каталога» чтобы не вводить путь до нужной папки вручную.

Настройка переменных окружения Windows в командной строке

Конечно, есть альтернативный вариант настройки переменных окружения с помощью командной строки Windows. Чтобы cmd правильно понял, о чем идет речь ее нужно обернуть в символы процента вот так, %имя_переменной%. Соответственно, чтобы вывести на экран значение переменной среды команда будет такой: echo %имя_переменной% .

В Windows есть специальные команды, предназначенные для создания и редактирования переменных. Это set и setx принципиальная разница между которыми в том, что первая управляет ими только в текущем окне командной строки, а вторая изменяет их «навсегда» поскольку изменения сохраняются в реестре.

Для просмотра всех существующих переменных и их значений введите set без параметров.

вывод команды set

Тут есть важный момент, который нужно понять, переменные среды считываются в момент запуска программы. Поэтому изменения, сделанные в графическом интерфейсе или командой setx не действуют на уже запущенные программы. Их придется закрыть и запустить снова. В то же время команда set влияет только на текущее окно или дочерние процессы.

Чтобы создать пользовательскую переменную среды или отредактировать существующую общий вид команды следующий setx имя значение , использовать кавычки при наличии пробелов. Если переменной с таким именем не существует, то она будет создана, в противном случае значение будет изменено на новое. Для управления системными переменными нужно дополнить команду ключом /m и командная строка должна быть запущена с правами администратора компьютера setx mypc T-800 /m .

создание переменной среды windows в командной строке

Впрочем, у setx имеется недостаток, с ее помощью нельзя удалить существующую переменную, максимум можно присвоить ей пустое значение setx mypc "" . Хотя при этом она как бы не существует для cmd, но фактически она продолжает оставаться в реестре. Полноценное удаление возможно непосредственно в реестре или с помощью команд, обеспечивающих работу с ним, а также в графическом интерфейсе.

Для работы с сеансовыми переменными используется команда set. Синтаксис несколько отличается set имя=значение . Здесь уже используется знак равенства вместо пробела, при этом не допускается его наличие в имени. Таким образом изменить переменную окружения с именем temp в текущем окне CMD можно командой: set temp=D:\Archive\Garbage .

Изменение пользовательской переменной окружения и просмотр нового значения

Использование переменных среды Windows сильно упрощает и ускоряет использование компьютера опытными пользователями. Каким способом их использовать каждый решает самостоятельно.


Бывает так, что написанный Вами BAT-файл работает на одном компьютере, но не работает на другом. Ошибка часто заключается в том, что были использованы прямые пути к файлам. Например батник для копирования всех текстовых файлов находящихся в папке windows на диске C

Такой батник будет работать на любом компьютере, только если операционная система установлена на диск С, если ОС расположена на другом диске D,F,K,J и т.д., необходимо использовать переменную %WINDIR%

Такой батник будет работать на любом компьютере - без разницы на какой диск установлена ОС

Переменные среды — текстовые переменные операционной системы, хранящие данные о ряде настроек системы. Используются переменные среды при копировании, перемещении, переименовании, удалении, создании файлов и папок других действий в командной строке.

Список переменных среды ОС Windows Вы можете посмотреть введя в командной строке: set и нажав клавишу Enter Также можно вывести список переменных в текстовый файл с помощью батника

Bat-файл с таким кодом создаст текстовый файл docent.txt(здесь и далее имена подставляйте свои)и выведет список переменных среды ОС Windows в этот текстовый документ в том-же месте где и располагается запущенный батник.

Список переменных сред

%ALLUSERSPROFILE% размещение профиля «All Users»

%APPDATA% используемое по умолчанию размещение данных приложений

%CD% путь к текущей папке

%CMDCMDLINE% строка команд, с помощью которой был запущен данный экземпляр Cmd.exe

%CMDEXTVERSION% номер версии текущих расширений обработчика команд

%COMPUTERNAME% имя компьютера

%COMSPEC% путь к исполняемой командной оболочке

%DATE% текущие данные, использует тот же формат, что и команда date /t

%ERRORLEVEL% код ошибки последней использовавшейся команды

%HOMEDRIVE% имя диска локальной рабочей станции

%HOMEPATH% полный путь к основному каталогу пользователя

%HOMESHARE% сетевой путь к общему основному каталогу пользователя

%LOGONSEVER% имя контроллера домена, который проверял подлинность текущей сессии

%NUMBER_OF_PROCESSORS% количество процессоров, установленных на компьютере

%OS% имя операционной системы

%PATHEXT% список расширений файлов

%PROCESSOR_ARCHITECTURE% архитектура процессора. Значения: x86, IA64

%PROCESSOR_IDENTFIER% описание процессора

%PROCESSOR_LEVEL% номер модели процессора, установленного на компьютере

%PROCESSOR_REVISION% номер модификации процессора

%ProgramFiles% путь к Program Files

%PROMPT% параметры командной строки для текущего интерпретатора

%RANDOM% произвольное десятичное число от 0 до 32767

%SYSTEMDRIVE% имя диска, содержащего корневой каталог

%SYSTEMROOT% размещение системного каталога Windows

%TIME% текущее время

%USERDOMAIN% имя домена, содержащего список учетных записей пользователей

%USERNAME% имя пользователя, выполнившего вход в систему

%USERPROFILE% размещение профиля для текущего пользователя

%WINDIR% размещение каталога операционной системы

Если Вы хотите посмотреть чему равна переменная среды на Вашем компьютере в командной строке(окно CMD), не забывайте прописывать впереди переменной "echo"

echo — команда предназначенная для отображения строки текста

Например если Вы захотите узнать текущее время %TIME% и просто напишите %TIME% в CMD - то получите ошибку: "Синтаксическая ошибка в имени файла, имени папки или метке тома"

Если напишете echo %TIME% - то узнаете точное время

Батником вывести информацию в txt можно так

echo сегодня %DATE% время %TIME% >> docent.txt

echo имя компьютера %COMPUTERNAME% >> docent.txt

echo имя юзера %USERNAME% >> docent.txt

echo где Винда %WINDIR% >> docent.txt

echo и т.д. и т.п >> docent.txt

Использование переменной при удалении файлов и папок с помощью Bat файла

Удаление папки Docent которая находится на диске С в WINDOWS

RD С:\WINDOWS\Docent /S/Q

То-же самое, но удаляем папку с помощью переменной %WINDIR%

RD %WINDIR%\Docent /S/Q

Использование переменной при перемещении файлов

Перемещение текстового файла docent.txt из папки WINDOWS на диске С в папку Program Files которая тоже на диске С

MOVE "C:\WINDOWS\docent.txt" "C:\Program Files"

То-же самое, но перемещаем с помощью переменных %WINDIR% и %ProgramFiles%

Профессиональная поддержка ПК, поддержка IT-системы в целом – это то, о чем нужно задуматься уже сегодня. Доверьте это специалистам. Успехов!

Месяц без оплаты. Подробнее!

Попробуйте наши услуги обслуживания и получите третий месяц обслуживания в подарок!

Читайте также: