Я пытаюсь установить три переменные окружения и добавить их к машинному пути. Прямо сейчас мой код выглядит так:
setx CATALINA_HOME "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7" /m
setx JRE_HOME "C:\Program Files (x86)\Java\jre7" /m
setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
setx PATH "%PATH%;%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;" /m
Первые три при запуске в одиночку работают нормально для добавления переменной. Однако последняя строка приводит к удалению части исходного пути, и ни одна из дополнительных переменных не добавляется.
Мой желаемый результат будет добавление трех переменных и для общесистемного пути
[original path];%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;
источник
/m
опцию дляsetx
.Если вы используете% var%, он расширяется при использовании. Если вы хотите, чтобы переменная включала% var%, вам нужно написать %% var %%.
Обратите внимание также, что параметры реестра не видны текущему процессу, но видны только новым процессам. В winpe эти параметры в реестре никогда не передаются новым процессам, но среда cmd получает среду обозревателя, а не реестр. По этой причине люди написали утилиты, которые возят разные среды.
Если вы хотите прочитать реестр для текущего сеанса cmd, вам может понадобиться что-то вроде conset.exe Фрэнка Уэстлейка.
источник
Я обнаружил, что размещение
/M
переключателя рано делает свое дело, даже если они хотят, чтобы вы поместили его в конце.Так, например, это работает:
Но это не так:
источник