Команда SETX: создание и редактирование переменных среды Windows

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

SetX.exe это отдельная утилита, располагающая по адресу %WINDIR%\System32\setx.exe. Если сравнивать её возможности с командой SET, то они представляются более интересными, хотя бы по той причине, что изменения переменных окружения, внесённые через SETX, записываются в реестр. Это значит, что они действуют не только в текущем сеансе командной строки, но и в любом другом.

Первоначально утилита SetX.exe входила в Windows 2000 Resource Kit, но начиная с Windows Vista это утилита из стандартного пакета поставки Windows.

У команды SETX целых три синтаксиса. Их использование зависит от того, что выступает источником значения переменной.

Синтаксис 1:

SETX [/S [компьютер] [/U [домен]\[пользователь] [/P [пароль]]]] [имя_переменной] [значение] [/M]

Синтаксис 2:

SETX [/S [компьютер] [/U [домен]\[пользователь] [/P [пароль]]]] [имя_переменной] /K [путь_к_параметру_реестра] [/M]

Синтаксис 3:

SETX [/S [компьютер] [/U [домен]\[пользователь] [/P [пароль]]]] /F [файл] {var {/A x,y | /R x,y строка}[/M] | /X} [/D разделители]

Синтаксис 1 используется, если мы задаём значение переменной непосредственно из командной строки, синтаксис 2, если значение переменной берётся из параметра реестра, а синтаксис 3, если из текстового файла. Далее расшифровка синтаксисов команды.

/S — имя или IP-адрес удалённого компьютера. Если команда выполняется на локальном компьютере, указывать не нужно;

/U — учётная запись, используемая для выполнения команды. Если не указана, команда будет выполняться из-под текущего пользователя;

/P — пароль от указанной учётной записи. Если запись не указана, пароль не требуется;

/M — ключ для создание системной переменной (в разделе HKEY_LOCAL_MACHINE). Без его указания переменная будет создана для пользователя (в разделе HKEY_CURRENT_USER);

/K — задание значения переменной по информации из параметра реестра;

/F — имя текстового файла, откуда берётся значение переменной;

/A — абсолютные координаты (строка x, элемент y) для поиска значения переменной в файле;

/R — задание координат относительно указанного элемента в файле для поиска значения переменной;

/X — отображение содержимого файла с указанными координатами;

/D — указание дополнительных разделителей. В качестве разделителя может выступать любой знак ASCII. Максимальное число разделителей равно 15.

Приведём несколько примеров использования команды SETX.

Создать на локальной машине пользовательскую переменную %PRIMER% со значением «new»:

setx PRIMER new

Создать на локальном компьютере системную переменную %PRIMER% со значение «new 2»:

setx PRIMER "new 2" /M

Обратите внимание: если значение содержит пробел, оно должно заключаться в кавычки.

Сделать значение переменной PRIMER пустым:

setx PRIMER ""

Можно взять значение переменной из другой переменной. Возьмём для переменной %PRIMER% значение из переменной %PATH%:

setx PRIMER "%PATH%"

Теперь проделаем такую же операцию, но на удаленном компьютере с именем TEST-PC. Этот компьютер входит в домен DOMAIN99, а для подключения к нему мы используем доменную учётную запись Admin. Так как это всего лишь пример, зададим для учётной записи несложный пароль «PrimerPass».

setx /S TEST-PC /U DOMAIN99\Admin /P PrimerPass PRIMER "%PATH%"

Установим значение переменной %PRIMER% равное параметру реестра TimeZoneKeyName, находящемуся по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation:

setx PRIMER /K HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\TimeZoneKeyName

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

Команда SETX: создание и редактирование переменных среды Windows

Чтобы посмотреть координаты содержимого файла, используем команду

setx /F C:\primer.txt /X

Команда SETX: создание и редактирование переменных среды Windows

Нумерация строк и колонок начинается с 0. Таким образом, первый элемент (в данном случае это a1) будет иметь координаты 0,0.

Присвоим переменной %PRIMER% значение из файла C:\primer.txt, которое равнялось бы пятому элементу третьей строки (координаты 2,4). В данном случае это c5.

setx PRIMER /F C:\primer.txt /A 2,4

А вот другая команда:

setx PRIMER /F C:\primer.txt /R 2,1 b2

В данном случае указаны не абсолютные, а относительные координаты. Точкой отсчёта является элемент b2 с координатами 1,1. Прибавляем координаты по горизонтали и по вертикали, получаем 3,2. Это элемент d3.

Напоследок о некоторых особенностях команды SETX.

  • Переменные, созданные или отредактированные через SETX на локальном компьютере, будут доступны в будущих окнах командной строки, но не в текущем;
  • Переменные, созданные или отредактированные через SETX на удалённом компьютере, будут доступны со следующего сеанса входа;
  • Допустимы следующие типы параметров реестра: REG_DWORD, REG_EXPAND_SZ, REG_SZ, REG_MULTI_SZ;
  • Значения типа REG_DWORD извлекаются из реестра в десятичном формате;
  • Пользовательские переменные запоминаются в профиле и действительны для перемещаемого профиля на любом компьютере домена;
  • Если среди пользовательских переменных и среди системных переменных имеются переменные с одним и тем же именем, то приоритет имеют пользовательские переменные;
  • Удалить переменную среды через SETX нельзя. Для этого следует использовать графический интерфейс системы или реестр Windows (в командной строке можно использовать команду REG DELETE).

Итак, мы познакомились с мощным инструментом по работе с переменными среды Windows в командной строке — утилитой SetX.exe. Надеюсь, что после этой статьи синтаксис этой утилиты уже не кажется вам таким сложным.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *