Невозможно запустить команду в командном файле с пробелом - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть такая команда:

D:\ab cd\jre\bin\javaw -jar path_to_my_jar

Я хочу иметь возможность выполнить эту команду в командном файле, поэтому я сначала проверил ее в командной строке с помощью:

start "test" "D:\ab cd\jre\bin\javaw -jar path_to_my_jar"

Тем не менее, я получил сообщение об ошибке:

Windows не может найти D:\ab cd\jre\bin\javaw -jar path_to_my_jar
, убедитесь, что вы правильно ввели имя и повторите попытку

Чтоправильная команда, чтобы заставить это работать?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Есть два способа сделать это:

start "test" "D:\ab cd\jre\bin\javaw" -jar path_to_my_jar

также упоминается здесь и здесь и даже:

start "test" D:\ab cd\jre\bin\javaw -jar path_to_my_jar

, чтотакже должен нормально работать, если путь не содержит пробелов.В вашем вопросе это не сработает.

Причина, по которой ваша команда не сработала, заключалась в том, что система решила, что вы хотите открыть файл с полным путем D:\ab cd\jre\bin\javaw -jar path_to_my_jar.

См. start /? в cmd для получения дополнительной информации.

0 голосов
/ 19 февраля 2019

Как я впервые прокомментировал, это будет работать:

start "test" "D:\ab cd\jre\bin\javaw" -jar "path_to_my_jar"  

Но я бы предложил изменить это, чтобы устранить двусмысленность (потенциальную опасность):

start "title" "D:\ab cd\jre\bin\javaw.exe" -jar "path_to_my_jar"

Также, если вы делаететак часто, я бы посоветовал вам добавить D:\ab cd\jre\bin\ к PATH переменной,
, после чего вы можете просто start "title" javaw ....

Путь, в котором есть пробелы, необходимо заключить.
Вкл.с другой стороны, вещи, заключенные в пару кавычек, рассматриваются как единое целое.

И, как сказал Клитос Кириаку в комментариях к ответу с двойным звуковым сигналом , часть start "test"опционально в этом случае кажется излишним, вы можете просто "path\to\javaw.exe" -jar "path_to_my_jar".
Однако я бы не советовал вам его удалять.Поскольку не интуитивно понятно, какой exe не будет ждать, а какой будет, поэтому на самом деле лучше продолжать использовать start для интуитивного управления им.
start "" не будет приостанавливать текущую партию / cmd для ожидания,но start /wait будет.
Схожий вопрос:
Как командная строка узнает, когда ждать выхода?

0 голосов
/ 19 февраля 2019

Если ваш путь содержит пробелы, вы должны заключить его в кавычки.Но вам нужно только обернуть сам путь, а не отправленные параметры (в противном случае Windows будет рассматривать параметры как часть пути.)

start "test" "D:\ab cd\jre\bin\javaw" -jar path_to_my_jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...