Я пытаюсь получить свой путь java jdk, используя пакетный скрипт. Вот что у меня есть:

@echo off
for /f %%j in ("java.exe") do (
    set JAVA_HOME=%%~dp$PATH:j
)

if "%JAVA_HOME%".==. (
    @echo Java.exe not found
    @echo Please make sure that java JDK 1.7 or 1.8 is installed
)

В операторе if, поскольку путь находится в C:\Program Files\Common Files\etc .., я получаю сообщение об ошибке, что в данный момент Common не ожидалось. Однако условие IF не работает должным образом, если Java не найден.

Если я удаляю "" окружающий JAVA_HOME, я получаю ошибку, что Файлы не ожидались в это время. В этом случае условие IF работает правильно, если найден файл JAVA.exe.

Почему он разрешает пробел или «\» в \Program Files и останавливается после этого?

2 ответа2

0

Я попробовал ваше предложение, и оно отображает \ Общее не ожидалось

Скопировать из консоли:

C:\tmp>del test.bat

C:\tmp>copy con test.bat
@echo off
for /f %%j in ("java.exe") do (
    set JAVA_HOME=%%~dp$PATH:j
)

if "%JAVA_HOME%"=="" (
    @echo Java.exe not found
    @echo Please make sure that java JDK 1.7 or 1.8 is installed
) else (
    @echo Java.exe exists in "%JAVA_HOME%"
)
^Z
Files copied:         1.

C:\tmp>test
Java.exe exists in "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\"

Эмулируйте отсутствие - JAVA.EXE заменен на ZZZ.EXE:

C:\tmp>del test.bat

C:\tmp>copy con test.bat
@echo off
for /f %%j in ("ZZZ.exe") do (
    set JAVA_HOME=%%~dp$PATH:j
)

if "%JAVA_HOME%"=="" (
    @echo Java.exe not found
    @echo Please make sure that java JDK 1.7 or 1.8 is installed
) else (
    @echo Java.exe exists in "%JAVA_HOME%"
)
^Z
Files copied:         1.

C:\tmp>test
Java.exe not found
Please make sure that java JDK 1.7 or 1.8 is installed

C:\tmp>
0

Когда вы строите путь, поставить двойные кавычки " каждого отдельного входа в пути.

Например:

export XPATH="c:\Program Files\foo":"C:\Program Files\bar"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .