Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
#1

Запуск программы через C++ и консоль - C++

11.01.2013, 17:47. Просмотров 4045. Ответов 12
Метки нет (Все метки)

Доброго времени суток. Столкнулся с проблемой, что если запускать программу через функцию system, а в пути к программе есть пробелы, то консоль ругается, мол "C:\ Program" не является внутренней или внешней......

вот пример кода:
C++
1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{
   string cmd;
   cmd = "C:\\Program Files\\PDFCreator\\PDFCreator.exe /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
   system(cmd.c_str());
   system("pause");
        return 0;
}
кто что может посоветовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск программы через C++ и консоль (C++):

Запуск программы через консоль - C++
Программа архиватор не запускается через консоль, не могу разобраться /* lzw.c based on Mark R. Nelson's demonstration program ...

Запуск другой программы через определённое время - C++
Всем привет, незнаю где напмсать!Мне нужно что бы программа на с ++ запускала через определённое время другую прогу типа .ехе как это...

Вывод текста описания команд в консоль командной строки при запуске программы через командную строку - C++
Всем привет! Есть такая программка которая запускается через командную строку с параметром, например : C:\папка\spectr.exe /А ...

Запуск программы без создания окна. Запуск фоновой программы - C++
Вопрос, как сделать, чтобы консольное приложение при запуске не создавало окошко консоли. Т.е. запустился процесс, но визуально ничего не...

Не закрывать консоль после выполнения программы - C++
Как сделать чтобы после выполнения програмы блэкскрин не закрывался?

Консоль закрывается после выполнения программы - C++
Всем привет, такая проблема, после выполнения программы окно консоли закрывается. Как можно предотвратить это, не используя...

12
0x10
2479 / 1654 / 248
Регистрация: 24.11.2012
Сообщений: 4,100
11.01.2013, 17:52 #2
Обернуть всю команду в кавычки...
0
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
11.01.2013, 17:55  [ТС] #3
Цитата Сообщение от 0x10 Посмотреть сообщение
Обернуть всю команду в кавычки...
не сработало, тоже самое выводит.
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
11.01.2013, 18:09 #4
C++
1
"\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
1
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
11.01.2013, 18:19 #5
Toshkarik, Не могли бы объяснить, а то непонятно. Ведь строка и так уже в кавычках. Зачем еще одни нужны?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
11.01.2013, 18:23 #6
Иначе будет читать до первого пробела...
1
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
11.01.2013, 18:31 #7
Попробуй
C++
1
"\"start " + cmd.c_str() + "\"";
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
11.01.2013, 18:33 #8
Используй ShellExecute() или CreateProcess()
2
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
11.01.2013, 18:44 #9
Все дело в самом интерпретаторе команд Windows. Путь, содержащий пробелы, нужно брать в кавычки, иначе считается, что после первого пробела идут параметры для запуска программы.
1
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 11:06  [ТС] #10
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
"\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
не сработало(

Цитата Сообщение от m1Rr0r Посмотреть сообщение
C++
1
"\"start " + cmd.c_str() + "\"";
если так, как вы написали - "Windows не удалось найти 'c:\Program'. Проверьте, что имя....."
если так:
C++
1
"start \"" + cmd.c_str() + "\"";
открывается чистая командная строка, смотрящая в директорию, из которой была запущена моя программа. сам же pdf creator не отрабатывает.

сейчас почитаю про
Цитата Сообщение от Avazart Посмотреть сообщение
ShellExecute() или CreateProcess()
.

если что, у меня cmd Windows XP [Версия 5.1.2600]
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
14.01.2013, 11:24 #11
Цитата Сообщение от tokutei Посмотреть сообщение
не сработало(
У меня сработало. Правда я не string использовал а char *
C++
1
2
3
char *str = "\"C:\\Program Files\\1.djvu\"";
 
system(str);
0
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 11:49  [ТС] #12
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
У меня сработало. Правда я не string использовал а char *
C++
1
2
3
char *str = "\"C:\\Program Files\\1.djvu\"";
 
system(str);
я напишу так: вот такой код у меня хорошо отрабатывает
C++
1
2
cmd = "\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\"";
system(cmd.c_str());
а вот такой уже нет:
C++
1
2
cmd = "\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
system(cmd.c_str());
вся проблема заключается в параметрах. можно конечно запускать через такой батничек
C++
1
2
3
cd C:\Program Files\PDFCreator
PDFCreator.exe /NoStart /IF"%1" /OF"%2" 
exit
но это уже извращение..

Добавлено через 7 минут
у меня паника, вот такой код через bat отлично проходит (вставляю в тег с++ для читабельности)
C++
1
2
"C:\Program Files\PDFCreator\PDFCreator.exe" /NoStart /IF"D:\work\1101130203.ps" /OF"D:\work\1101130203.pdf" 
exit
а через сам c++ никак( все таки иду копать в пользу CreateProcess
0
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 12:44  [ТС] #13
Решил проблему так:
C++
1
2
3
string cmd = "/NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
ShellExecute(NULL, "open", "C:\\Program Files\\PDFCreator\\PDFCreator.exe", cmd.c_str(), NULL, SW_SHOWNORMAL);
system("pause");
2
14.01.2013, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 12:44
Привет! Вот еще темы с ответами:

Результаты выполнения программы не помещаются в консоль - C++
В кратце - начал изучать С++,пишу программу,но когда я её компилирую,а потом запускаю и ввожу данные - получаю результаты,у меня...

Не выводит в консоль результаты работы программы - C++
Условие найти товар по стране используя структуры: #include "stdafx.h" #include <iostream> #include <fstream> #include <iomanip> ...

Убрать консоль при запуске программы - C++
как сделать так чтобы при запуске программы на c++ не открывалась консоль?

Компиляция через консоль. VS 2012 - C++
Запускаю vcvars32.bat в папке C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin Пишу: cl -GX C:\Downloads\Sample.cpp Ответ: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru