52

В чем разница между SETX и SET?

Согласно моему пониманию:
Оба используются для установки переменных среды
SETX для пользовательских переменных.
SET для переменных оболочки.

3 ответа3

74

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

Set изменяет текущие значения среды оболочки (окна), и изменение доступно сразу, но оно временно. Изменение не повлияет на другие запущенные оболочки, и как только вы закроете оболочку, новое значение будет потеряно до тех пор, пока вы не запустите set.

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

Смотрите здесь для примера: http://batcheero.blogspot.com/2008/02/set-and-setx.html

8

На самом деле мы можем установить переменную в трех областях:
1. Ракушка
2. пользователь
3. Система (Машина) или Глобальная

SET: Создать или обновить текущую область оболочки для временной.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX: создать или обновить текущие переменные среды пользователя для постоянных.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

В GUI Пользовательские и Системные переменные среды.

1

Добавление точки, которая была упущена другими ответчиками.

Чтобы установить переменную системной среды, а не переменную пользовательской среды, нам просто нужно использовать параметр /m в команде setx и запустить ее из командной строки с повышенными правами (администратора).

setx variable value /m

Пример: откройте командную строку от имени администратора и запустите

setx Path "%Path%;C:\Users\User\Libs" /m

Объяснение: Приведенная выше команда добавит «C:\Users\User\Libs» к уже существующей переменной пути (системная переменная среды).

Без аргумента /m он будет вносить изменения или создавать только переменную уровня пользователя.

Из руководства пользователя setx,

/M Указывает, что переменная должна быть установлена в общесистемной (HKEY_LOCAL_MACHINE) среде. По умолчанию переменная устанавливается в среде HKEY_CURRENT_USER.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .