2015-04-20 3 views
1

Я пытаюсь создать командный файл, который устанавливает JAVA_HOME.Ввод вывода в переменную

Теперь у меня есть следующий код, который ищет, если существует путь. Если это так, я хотел бы сохранить полное имя в переменной.

set javaLoc= 
set javaLoc=$(dir "C:\Program Files (x86)\Java\jre1.8*" /s/b) 
echo %javaLoc% 

Но эхо возвращает меня:

$(dir "C:\Program Files (x86)\Java\jre1.8*" /s/b) 

В то время как я хотел бы, чтобы захватить выход (C: \ Program Files (x86) \ Java \ jre1.8.0_40) от него в «javaLoc ».

Я также попытался:

dir "C:\Program Files (x86)\Java\jre1.8*" /s/b > javaLoc 

Но и это не работает.
Может ли кто-нибудь помочь мне в том, что я делаю неправильно?

+0

Возможно, вы сможете достичь этого с помощью инструкции FOR', где вы должны сделать переменную итерации 'javaLoc'. Введите 'FOR /?' В командной строке, чтобы просмотреть список параметров. – stakx

ответ

1

Я вижу, что вы приходите с опытом от bash (или, возможно, с kornshell). К сожалению, пакет немного более ограничен, чем его аналог * nix, поэтому вы не можете напрямую сохранить вывод команды в переменной.

Вы можете, однако, выполнить команду через for /F петлю и сохранить результат в переменной таким образом, как это:

for /F %%A in ('dir "C:\Program Files (x86)\Java\jre1.8*" /s /b') do (
    set javaLoc=%%A 
) 

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

+0

Это сработало для меня. Я добавил «delims =» в него для пробелов. – Tenzin

Смежные вопросы