以前の値を上書きするユーザーPATHを設定するには:
setx PATH "C:\MyPath1"
既存のユーザーパスの前に値「C:\ MyPath0」を追加するには、次のように入力します。
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" )
値「C:\ MyPath2」を既存のユーザーパスに追加するには:
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" )
ユーザーPATHにスペースが含まれる場合と含まれない場合があるため、if-else条件が必要です。必要に応じて、コマンドを引数として設定/前置/追加する値を受け入れる汎用バッチファイルとして保存できます(必ず各%記号を2倍にします)。
バッチファイル
:: 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.
;%PATH%
するときに、既存のパス(システムパスから派生したもの)を追加するように求めているように思えます。