Добавить в переменную System PATH значение с помощью командного файла - PullRequest
1 голос
/ 31 мая 2019

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

Когда я использую:

SETX /M PATH "%CD%;%PATH%"

делает нужную вещь. Однако я получаю сообщение об ошибке:

сохраняемые данные усекаются до 1024 символов.

Когда я проверял системную переменную с помощью графического интерфейса, я увидел, что пользовательский путь добавляется в системный путь. В результате в системном пути есть дублированные записи.

Я попытался присвоить переменную %PATH% временной переменной и повторить ее, но я также увидел там дубликаты.

В каком-то стековом ответе я увидел, что переменная %PATH%, которую мы используем в командном файле, на самом деле является объединением как пользовательского, так и системного пути.

В командной строке я попытался:

REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH"

но я не очень понимаю, можем ли мы использовать его для получения значения PATH и присвоения другой переменной.

  1. Поэтому мне нужно найти способ назначить ТОЛЬКО СИСТЕМНЫЙ ПУТЬ временной переменной, скажем, SYS_PATHS. Как я могу это сделать?
  2. Есть ли лучший способ преодолеть этот сценарий?

1 Ответ

0 голосов
/ 03 июня 2019

Я нашел ответ на заданный вопрос в ссылке , предоставленной @Mofi. Вот как вы можете взять только системный путь и добавить к нему каталог.

set "env=HKLM\System\CurrentControlSet\Control\Session Manager\Environment"

for /f "tokens=2*" %%I in (
     'reg query "%env%" /v Path ^| findstr /i "\<Path\>"'
) do setx /m PATH "%%J;%CD%"
...