Вам нужна setx.exe
(это программа командной строки). Используйте setx /?
чтобы получить информацию об использовании, но для вашего случая использования это сводится к следующему:
setx MYVAR "The value of my variable"
Обратите внимание, что setx
не обновляет текущие переменные среды для работающей программы (например, CMD или Powershell); Вам также нужно использовать команду set
для обновления переменных в оболочке.
Два других способа сделать это:
- Используйте PowerShell для вызова функции .NET
[System.Environment]::SetEnvironmentVariable(<varname>, <value>, [System.EnvironmentVariableTarget]::User)
(вы можете заменить 1
или "user"
на [System.EnvironmentVariableTarget]::User
; это перечисление)
- Редактируйте реестр напрямую. По адресу https://stackoverflow.com/questions/573817/where-are-environment-variables-stored-in-registry расположение: HKCU\Environment. Например, вы можете добавить следующее значение (используя программу
reg.exe
): reg add /v <VARNAME> /d <VALUE>
Если вы хотите обновить свой PATH для каждого пользователя, не добавляя значения PATH для всех пользователей (локальный компьютер) в свой персональный PATH, вам нужно будет немного сложнее. Используя reg query
или [System.Environment]::GetEnvironmentVariable(<varname>, [System.EnvironmentVariableTarget]::User)
, вы можете получить текущее значение из реестра, вместо того, чтобы получать текущее значение процесса для PATH (который является объединением пользовательских и машинных значений). Используя PS, вы можете даже установить это значение во временную переменную:
set mypath $([Environment]::GetEnvironmentVariable("Path", 1))
создает временную (локальную, не относящуюся к среде) переменную с именем "mypath" и устанавливает для нее текущее пользовательское значение переменной среды PATH (Windows имена переменных среды нечувствительны к регистру).
echo $mypath
чтобы убедиться, что вы правильно поняли.
set mypath ($mypath + ';C:\foo\bar'); echo $mypath
добавляет C:\foo\bar
к временной переменной и возвращает результат обратно.
setx Path $mypath
чтобы обновить переменную среды с вашей объединенной строкой.
set $env:Path ($env:Path + ';C:\foo\bar')
чтобы также обновить текущий сеанс PowerShell или просто запустить новый из проводника Windows (Пуск, панель задач и т. д.).