Установка переменной среды PATH с помощью cmd

#windows #cmd #environment-variables

#Windows #cmd #переменные среды

Вопрос:

Я попытался добавить в переменную среды PATH «;C:my_EXE » таким образом, я могу запускать программы, которые я туда поместил, через cmd (Windows 8). Я попробовал эту команду:

 set PATH=%PATH%;C:my_EXE
  

но это изменило переменную среды PATH только до тех пор, пока окно CMD не было закрыто.
Я искал в Google и нашел эту команду:

 setx PATH "%PATH%;C:my_EXE"
  

предполагается, что она устанавливается навсегда, но она также работает только до тех пор, пока окно CMD не закроется
, и это сделало что-то вроде этого:

 [new PATH]=[old PATH]X2
  

Он появляется только в новом cmd, а не в системных свойствах (!=cmd, есть ПУТЬ с моим новым путем, а не X2)

Почему это происходит? Как я могу установить переменную среды PATH без проблем?

Комментарии:

1. Существует две постоянные переменные PATH, переменная для каждого компьютера и для каждого пользователя. Они добавляются вместе, чтобы создать фактическую переменную среды. Вот почему вы получаете удвоенный путь, вы устанавливаете переменную для каждого пользователя, чтобы включить все из добавленной переменной. Вы можете использовать setx с параметром /m, но вместо этого вам следует рассмотреть возможность использования pathman , поскольку он предназначен для управления путями. (Использование setx может привести к потере данных, если постоянный ПУТЬ ссылается на другую переменную среды.)

2. @Harry Johnston: параметр /m у меня не работает (проблема не решена, и ссылка на pathman ссылается на Windows Server 2003 Resource Kit Tools [???]

3. да, pathman является частью пакета инструментов W2003 resource kit. (Вы можете просто загрузить файл cab и извлечь pathman.exe непосредственно из него вам не нужно запускать программу установки.)

4. @Harry Johnston: спасибо! это работает отлично. (Если вы хотите, напишите это как ответ).

Ответ №1:

Существует две постоянные переменные PATH, переменная для каждого компьютера и для каждого пользователя. Они добавляются вместе, чтобы создать фактическую переменную среды. (Переменные среды в ПУТИ также расширяются на этом этапе.)

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

Вы можете использовать setx с параметром /m для установки постоянной переменной для каждой машины, но это не идеально:

  • Если установлена постоянная переменная для каждого пользователя, ее содержимое будет скопировано в постоянную переменную для каждого компьютера, что, вероятно, неуместно;

  • Если постоянная переменная ссылается на другие переменные среды, ссылки будут заменены текущим значением этих переменных. Если переменные, на которые ссылаются, изменяются, ПУТЬ больше не будет следовать этим изменениям. (Честно говоря, в большинстве случаев это не имеет значения: эта функция обычно не используется.)

Вместо этого рассмотрите возможность использования pathman , который специально разработан для управления путями. Вы можете получить pathman.exe из загрузки Windows Server 2003 Resource Kit Tools.

Обратите внимание, что оба setx и pathman могут зависать, если запущены какие-либо приложения с графическим интерфейсом, не отвечающие на запросы, даже если окно приложения скрыто. Лучший способ минимизировать этот риск — перезагрузить компьютер непосредственно перед запуском любого сценария, который использует setx или pathman .

Ответ №2:

Вы должны использовать команду setx с параметром «/ m».

Комментарии:

1. @Yagel: покажите полную командную строку (отредактировав свой вопрос) и расскажите нам, что именно произошло.