Пробелы в аргументах командной строки. Не удается правильно прочитать "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.

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

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

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

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

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

Другие вопросы по тегам