Во-первых, ваша логика не требует ELSE:
:CommandCheck
If exist "someFile" goto start
echo !!Java not installed!! Installing supported version now
goto install
Но я не думаю, что вы пытаетесь проверить существование файла. Вместо этого вы пытаетесь запустить команду java -version
, и вы хотите начать, если эта команда была успешной, и распечатать сообщение и перейти к установке, если она не удалась.
Оператор &&
может условно выполнить команду, если предыдущая команда выполнена успешно. Существует кораллал ||
для выполнения команды, если предыдущая команда не удалась.
someCommand && echo someCommand succeeded || echo someCommand failed
Вам нужен только тот или иной. Я также предполагаю, что вам не нужно видеть вывод (или сообщение об ошибке) теста java -version
.
:CommandCheck
java -version >nul 2>nul && goto start
echo !!Java not installed!! Installing supported version now
goto install
Если вы когда-нибудь действительно хотите использовать IF ELSE с круглыми скобками, есть несколько важных правил синтаксиса
- Скобки должны быть в том же направлении, что и предыдущего IF и ELSE
- Там должен быть пробел перед каждой открывающей скобкой
Вот пример
if exist "someFile" (
echo someFile exists
) else (
echo someFile does NOT exist
)
Все это можно поставить на одну линию
if exist "someFile" (echo someFile exists)else (echo someFile does NOT exist)
Следующая терпит неудачу, потому что открывающие скобки не предшествует пробел, так "someFIle"(
и else(
рассматриваются как знаки, которые не могут работать.
if exist "someFile"(echo someFile exists)else(echo someFile does NOT exist)
Следующая терпит неудачу, потому что круглые скобки должны быть на той же линии, как IF и ELSE
if exist "someFile"
(echo someFile exists)
else
(echo someFile does NOT exist)
Спасибо за быстрый ответ. Я пытаюсь проверить, существует ли команда. Будет ли это тоже нужно быть в ""? Я попытался сделать это, и проверка снова не удалась. –
Можете ли вы уточнить, что вы имеете в виду, когда говорите «команда». Вы имеете в виду входной параметр i.e "yourscript.bat java yourfile.jar"? – nerflad
Несомненно. То, что я пытаюсь сделать, - проверить наличие команды в cmd. В этом случае я хочу проверить «java -version». Если этого не существует, я пытаюсь заставить его перейти к другой части скрипта. Если он существует, то и перейти к другому разделу. Надеюсь, это поможет. –