O comando que você quer é setx.exe
(é um programa de linha de comando). Use setx /?
para obter informações de uso, mas, para o seu caso de uso, resume-se ao seguinte:
setx MYVAR "The value of my variable"
Observe que setx
não atualiza suas variáveis de ambiente atuais para o programa em execução (por exemplo, CMD ou Powershell); você também precisará usar o comando set
para atualizar as variáveis no shell.
Duas outras maneiras de fazer isso:
- Use o PowerShell para chamar a função .NET
[System.Environment]::SetEnvironmentVariable(<varname>, <value>, [System.EnvironmentVariableTarget]::User)
(você pode substituir1
ou"user"
por[System.EnvironmentVariableTarget]::User
; é um enum) - Edite o registro diretamente. Por link , o local é HKCU \ Environment. Você poderia, por exemplo, adicionar um valor como este (usando o programa
reg.exe
):reg add /v <VARNAME> /d <VALUE>
Se você quiser atualizar o seu PATH por usuário sem adicionar os valores PATH de todos os usuários (máquina local) ao seu PATH pessoal, precisará ser um pouco mais complicado. Usando reg query
ou [System.Environment]::GetEnvironmentVariable(<varname>, [System.EnvironmentVariableTarget]::User)
, você pode obter o valor atual do registro, em vez de obter o valor atual do processo para PATH (que é uma concatenação dos valores do usuário e da máquina). Usando o PS, você pode até definir esse valor para uma variável temporária:
set mypath $([Environment]::GetEnvironmentVariable("Path", 1))
cria uma variável temporária (local, não-ambiente) chamada "mypath" e a configura para o valor atual específico do usuário da variável de ambiente PATH (os nomes de variáveis de ambiente do Windows diferenciam maiúsculas de minúsculas).
echo $mypath
para garantir que você o tenha entendido corretamente.
set mypath ($mypath + ';C:\foo\bar'); echo $mypath
acrescenta C:\foo\bar
à variável temporária e reflete o resultado.
setx Path $mypath
para atualizar a variável de ambiente com sua string concatenada.
set $env:Path ($env:Path + ';C:\foo\bar')
para também atualizar a sessão atual do PowerShell ou apenas iniciar uma nova no Windows Explorer (Iniciar, barra de tarefas, o que for).