web-dev-qa-db-ja.com

コマンドラインからPATHユーザー環境変数を更新する方法

システムレベルの構成を含むシステムPATH変数があります。ユーザーPATH変数を使用して、ユーザー固有の構成でPATHを補完します。

ユーザーPATH変数を更新するコマンドラインから、たとえばsetxで実行したいと思います。

しかし、setxで既存のユーザーパスを参照する方法がわかりません。

次のコマンドで(/ Mなしのsetx)

setx PATH c:\my-user-specifc-bin-path;%PATH%

最初のPATHはユーザーPATHを意味しますが、2番目の%PATH%は「フル」(ユーザー+システム)PATHに置き換えられます。

つまり、システムパス全体がユーザーPATHで複製されることになります。最終的には、私が望んでいるものとは異なります。

私はしたいと思います:

  • ユーザーPATH環境変数のみに影響します
  • 1つまたは複数のパス要素を既存の値に追加/付加する
  • コマンドラインから実行してください。
12
Christian Lemer

PowerShellバージョン、ユーザーのPATHを設定:

  1. 現在のユーザーに新しいPATH(上書き)を設定します。
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1"
  1. 現在のユーザーPATHに追加を設定します。
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path);C:\MyPath1"
  1. Prependを現在のユーザーPATHに設定します。
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1;$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path)"
3
Tho Ho

以前の値を上書きするユーザーPATHを設定するには:

setx PATH "C:\MyPath1"

既存のユーザーPATHに値 "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.
12
Karan

SETX /Mが必要、デフォルトSETXHKEY_CURRENT_USERに設定

SETX /M PATH c:\my-bin-path;%PATH%
4
STTR

これはうまくいくようです:

setx PATH "c:\my-user-specifc-bin-path-which-may-contain-spaces;"%%PATH%%
1
rsphillips