cmd /c "C:\\Program Files (x86)\\Microsoft Office\\Office16\\WINWORD.EXE" "c:\\tmp\\docx_templates\\with space\\1.docx" /w /x
--
"C:\\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Здравствуйте, binks, Вы писали:
B>Почему так работает
Зачем Вы везде наставили двойных обратных слэшей?
B>а так нет
Потому, что cmd.exe, обнаружив открывающую кавычку, ищет парную, начиная с конца строки, в результате оставляя в строке только внутренние кавычки. Но зачем Вам вообще cmd.exe для запуска EXE-файла?
B>Как во втором варианте передать путь к файлу?
Если по каким-то религиозным причинам приспичило сделать это непременно через cmd.exe — удвоить первую и последнюю кавычку в строке.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Зачем Вы везде наставили двойных обратных слэшей?
По инерции.
ЕМ>Потому, что cmd.exe, обнаружив открывающую кавычку, ищет парную, начиная с конца строки, в результате оставляя в строке только внутренние кавычки.
Но оба варианта количеством кавычек не отличаются.
ЕМ>Но зачем Вам вообще cmd.exe для запуска EXE-файла?
Запускаю как CreateProcess. Хочу подобрать изменённый файл по окончания редактирования. Можно как-то иначе?
ЕМ>Если по каким-то религиозным причинам приспичило сделать это непременно через cmd.exe — удвоить первую и последнюю кавычку в строке.
Спасибо, так помогло.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Потому, что cmd.exe, обнаружив открывающую кавычку, ищет парную, начиная с конца строки, в результате оставляя в строке только внутренние кавычки. Но зачем Вам вообще cmd.exe для запуска EXE-файла?
Совсем не факт. Скорее — ищет дубль кавычек. Вроде в паскале такая практика. В бат файлах обычно вроде тоже так.
ЕМ>Если по каким-то религиозным причинам приспичило сделать это непременно через cmd.exe — удвоить первую и последнюю кавычку в строке.
Фигню советуешь. Надо закавычить строки с пробелами, а строки, содержащие кавычки — там надо кавычки продублировать
Здравствуйте, Евгений Музыченко, Вы писали:
M>>Надо закавычить строки с пробелами, а строки, содержащие кавычки — там надо кавычки продублировать
ЕМ>Ну так попробуйте сделать так именно при передаче командной строки cmd.exe, отпишитесь по результатам.
Можно на "ты", это раз. Во-вторых — у меня куча своего софта, как парсящего параметры командной строки, так и генерирующего командную строку для вызова сторонних программ, и всё работает
ЗЫ Если тебе будет нечем заняться — попробуй вызвать свою прогу из командной строки с несколькими параметрами, каждый из которых содержит пробелы
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Так и передавайте в CreateProcess непосредственно путь к EXE и его командную строку — хоть по отдельности, хоть вместе, согласно документации.
Переделал в таком виде. Я так изначально пробовал, но что-то пошло не так, видимо нужные аргументы не добавил.