Escape пробелы в пути к файлу при исполнении через файл bat - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь запустить процесс Java, передавая ему несколько параметров, используя bat-файл.Но проблема в том, что cmd только прыгает и ничего не показывает при использовании:

start cmd/C 

, поэтому, делая его

start cmd/K 

, появляется всплывающее окно cmd, где этоотображается ошибка

'C: \ New' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

В целях тестирования для воспроизведения проблемыВы можете запустить процесс Java в следующем примере.

Я искал решение, но единственной вещью, похожей на проблему, было использование set и после этого для работы с параметром.set "var = content"

Эхо правильно печатает папку с множеством пробелов, таких как: "C: \ New Folder and Spaces"
Код ниже:

SET "currDir=%~dp0" 
echo %currDir% 
start cmd /K "%currDir%"..\jvm\jre\bin\java.exe -version

Как я могу передать значение ~ dp0 , даже если в нем есть пробелы, без получения вышеуказанной ошибки?Что делать, если я должен использовать его несколько раз в команде запуска, например:

start cmd /K "%currDir%"..\jvm\jre\bin\java.exe -version -Djava.awt.headless=true %JAVA_OPTIONS% -jar "%~dp0MyJar.jar" -home "%~dp0.." %*

1 Ответ

0 голосов
/ 05 марта 2019

Как насчет надежды на существование коротких имен файлов и папок, поскольку они никогда не содержат пробелов?Попробуйте:

set currDir=%~sdp0

(Для получения дополнительной информации посетите Command line arguments (parameters)"> ss64 !)

Приветствия, Николай

...