Пробелы в аргументах командной строки.Не удается правильно прочитать «C: \ Program Files» - PullRequest
1 голос
/ 13 февраля 2012

Мне нужно запустить установку без вывода сообщений. Команда такая:

setup.exe -silent -response <Response File> -jreLoc <jreLoc>

jreLoc - это папка, в которой нужно найти bin / java.

Я установил JRockit как JDK, и он установлен в "C: \ Program Files \ Java \ jrockit-jre1.6.0_29-R28.2.0"

Проблема, с которой я сталкиваюсь, заключается в том, что значение для jreLoc доступно только для чтения до "C: \ Program", независимо от того, что я делаю с точки зрения редактирования пути или подстройки, двойных кавычек, прямой или обратной косой черты и т. Д.

Я использую скрипт Python для настройки всей среды, а позже скрипт Python вызывает команду setup.exe.

Я искал в Интернете, но обходные пути не работают. Любые намеки или указатели приветствуются.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Все пути Windows, содержащие пробелы, также имеют эквивалентный путь без пробелов, который вы можете использовать, если не можете понять, как заставить программу принять путь с пробелами.

В вашем конкретном примере, вероятно, без пробела - C:\Progra~1\Java\jrockit-jre1.6.0_29-R28.2.0' but if you open a command prompt and use dir / x` в папке верхнего уровня, которая скажет вам, что находится в вашей системе:

C:\>dir /x c:\progr*
 Volume in drive C is XP System
 Volume Serial Number is D8B8-DBEB

 Directory of c:\

30/01/2012  16:16    <DIR>          PROGRA~1     Program Files
13/02/2012  13:51    <DIR>          PROGRA~2     Program Files (x86)
               0 File(s)              0 bytes
               2 Dir(s)  26,189,307,904 bytes free
2 голосов
/ 13 февраля 2012

Попробуйте добавить еще одну пару двойных кавычек вокруг существующих кавычек:

"\"C:\Program Files\Java\jrockit-jre1.6.0_29-R28.2.0\""

в вашем скрипте Python.Таким образом, одна пара будет для Python, а другая - для оболочки, которая вызывает внешний исполняемый файл.

...