Пробелы в аргументах командной строки. Не удается правильно прочитать C:\Program Files

Мне нужно запустить автоматическую установку. Команда такая

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.

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


person Sumod    schedule 13.02.2012    source источник
comment
Не могли бы вы показать (например, скопировать/вставить), что вы пробовали и почему это не сработало?   -  person Tim Pietzcker    schedule 13.02.2012


Ответы (2)


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

Для вашего конкретного примера путь без пробелов, вероятно, C:\Progra~1\Java\jrockit-jre1.6.0_29-R28.2.0' but if you open a command prompt and usedir/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
person Duncan    schedule 13.02.2012
comment
Спасибо. Это работает и на самом деле настраивается в зависимости от того, есть ли у меня 32-битная или 64-битная версия. - person Sumod; 14.02.2012

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

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

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

person codaddict    schedule 13.02.2012