2015-04-30 3 views
0

Раньше я использовал это.Как я могу повторно использовать переменные среды в Windows?

JAVA_HOME=C:\... 
Path=...;%JAVA_HOME%\bin 

И я хочу использовать две отдельные переменные для JAVA_HOME и попытался это.

JAVA7_HOME=C:\... 
JAVA8_HOME=C:\... 
JAVA_HOME=%JAVA8_HOME% 
Path=...;%JAVA_HOME%\bin 

И похоже не работает. Фактическое значение Path содержит только %JAVA8_HOME%.

C:\Users\whoami\>echo %Path% 
...;%JAVA8_HOME%\bin;... 

C:\Users\whoami\> 

Как это сделать?

+0

Посмотрите здесь, например: http://stackoverflow.com/questions/10558316/example-of-delayed-expansion-in- batch-file – Arvo

+1

Я предполагаю, что вы определяете их в диалоге переменных среды панели управления. Порядок присваивания переменных REG_EXPAND_SZ (т. Е. Значение имеет по меньшей мере два символа '%') не определен, поскольку порядок перечисления значений в ключе реестра не определен. Таким образом, переменная 'REG_EXPAND_SZ', такая как' Path', должна напрямую зависеть только от простых переменных 'REG_SZ', таких как' JAVA7_HOME'. – eryksun

ответ

1

SETDisplay, set, or remove CMD environment variables. Изменения, внесенные с SET, останутся только на время текущей сессии CMD.

set "JAVA7_HOME=C:\..." 
set "JAVA8_HOME=C:\..." 
set "JAVA_HOME=%JAVA8_HOME%" 
set "Path=%Path%;%JAVA_HOME%\bin" 

Примечание" двойные кавычки во всех SET "variable=string": используются для обеспечения нет никаких нежелательных пробелов в переменной имя или строка значение.

Любые дополнительные пробелы вокруг имени переменной или строки будут не будут игнорироваться. SET не прощает лишние пробелы, как многие другие языки программирования сценариев .

ПримечаниеPATHDisplay or set a search path for executable files. Таким образом, вместо

set "Path=%Path%;%JAVA_HOME%\bin" 

вы могли бы просто использовать

Path=%Path%;%JAVA_HOME%\bin 
Смежные вопросы