Как обновить переменную среды PATH user из командной строки

У меня есть переменная системного пути с конфигурацией системного уровня.
Я использую переменную user PATH, чтобы дополнить путь пользовательской конфигурацией.

Я хочу обновить переменную пути пользователя из командной строки например с setx.

но я не знаю, как ссылаться на существующий путь пользователя в setx.

в следующей команде (setx без /M)

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

первый путь означает путь пользователя, а второй %PATH% будет заменяется путем" full " (user + system).

Это означает, что весь системный путь будет дублироваться в пользовательском пути... то, что определенно не то, что я хочу.

хотелось бы:

  • влияет только на переменную окружения user PATH
  • добавить / добавить один или несколько элементов пути к существующему значению
  • сделать это из командной строки.
2
задан Christian Lemer
24.12.2022 6:46 Количество просмотров материала 3316
Распечатать страницу

3 ответа

прописать путь пользователя заменяя Предыдущее значение:

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" )

условие if-else является обязательным, поскольку путь пользователя может содержать или не содержать пробелы. Если вы хотите, вы можете сохранить команды как общие пакетные файлы (не забудьте удвоить каждый знак%), которые принимают значение, которое будет установлено / добавлено / добавлено как аргумент.

Пакетным Файлом

:: 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.
9
отвечен Karan 2022-12-25 14:34

нужно SETX /M по умолчанию SETX значение HKEY_CURRENT_USER

SETX /M PATH c:\my-bin-path;%PATH%
4
отвечен STTR 2022-12-25 16:51

Это, кажется, работает:

setx PATH "c:\my-user-specifc-bin-path-which-may-contain-spaces;"%%PATH%%
1
отвечен rsphillips 2022-12-25 19:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх