Вам нужна 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 (Пуск, панель задач и т. д.).