Para definir o PATH do usuário sobrescrevendo qualquer valor anterior:
setx PATH "C:\MyPath1"
Para acrescentar um valor "C: \ MyPath0" ao CAMINHO do usuário existente:
for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "C:\MyPath0;%~a" ) else ( @setx PATH "C:\MyPath0;%~a %~b" )
Para acrescentar um valor "C: \ MyPath2" ao CAMINHO do usuário existente:
for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "%~a;C:\MyPath2" ) else ( @setx PATH "%~a %~b;C:\MyPath2" )
A condição if-else é necessária porque o PATH do usuário pode ou não conter espaços. Se você quiser, pode salvar os comandos como arquivos de lote genéricos (certifique-se de dobrar cada sinal%) que aceita o valor a ser definido / prefixado / anexado como um argumento.
Arquivo em lote
:: PATH-ADD - add a path to user path environment variable
@echo off
setlocal
:: set user path
set ok=0
for /f "skip=2 tokens=3*" %%a in ('reg query HKCU\Environment /v PATH') do if [%%b]==[] ( setx PATH "%%~a;%1" && set ok=1 ) else ( setx PATH "%%~a %%~b;%1" && set ok=1 )
if "%ok%" == "0" setx PATH "%1"
:end
endlocal
echo.