Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [c++] проблема при работе с system()  (Прочитано 13986 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dimaslviv
Участник

ua
Offline Offline

« : 28-02-2012 13:31 » 

Привет всем. Помогите добрые люди как решить эту проблему:
Код: (C++)
char command[] = "\"D:\\gzi p.exe\" -d \"D:\\file 5.js.gz\"";
system(command);

В результате выводит
"D:\gzi" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


При вызове:
Код: (C++)
char command[] = "\"D:\\gzi p.exe\" -d D:\\file5.js.gz";
system(command);
работает нормально
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-02-2012 13:49 » 

dimaslviv, а догадаться сложно? Пробел тут лишний. Мораль: не копипасть бездумно!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
dimaslviv
Участник

ua
Offline Offline

« Ответ #2 : 28-02-2012 15:23 » 

RXL,  это я для примера ввел эти файлы.
Просто ехе файл находится в папке с пробелами и файл который нужно обработать тоже также и в другой папке, нужно написать с разсчетом чтоб параметры принимались с пробелами и без них.
Если один параметр с лапками - все ок, если больше - лапки ингорируються
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-02-2012 16:15 » 

Внимательно смотри:

char command[] = "\"D:\\gzi p.exe\" -d \"D:\\file 5.js.gz\"";

"D:\gzi" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
dimaslviv
Участник

ua
Offline Offline

« Ответ #4 : 28-02-2012 17:16 » 

я уже нашол замену:
Код: (C++)
CreateProcess(L"D:\\gzi p.exe", L" -d \"D:\\file 5.js.gz\"",NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi);
Но всеравно интересно почему в system не работает также...
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 28-02-2012 19:55 » 

dimaslviv, [censored]....[/censored]
читать умеешь?

ЛИШНИЙ ПРОБЕЛ
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 28-02-2012 20:11 » 

Sla, RXL, я так понял, что это не лишний пробел, а так умышленно переименован exe, чтобы отладить работу с пробелами, как и было объяснено выше. exe-файл с пробелами в названии законен. CreateProcess его успешно запускает.

dimaslviv, если я правильно понимаю работу system, то этот вызов эквивалентен запуску cmd /c ... где вместо многоточия та строка, которую ты передаёшь в качестве параметра system. Поиграйся с кавычками (особенно двойными вложенными). Очевидно, что system теряет кавычки, т.е. cmd их удаляет - то же самое, что запускать cmd без ключа /s.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 28-02-2012 20:17 » 

не зна...
"D:\\gzi p.exe"
или
"D:\\gzi\\ p.exe"
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 29-02-2012 17:39 » 

Да, мы тоже бываем невнимательными.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
dimaslviv
Участник

ua
Offline Offline

« Ответ #9 : 12-03-2012 15:40 » 

Я имел в виду что ести использовать два пути в функции system с пробелами то она не работает.
Просто интересно почему.
Мне не проблема переименовать папку или файл но виндовс состоит с кучи файлов что лежат в папках с пробелами
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 12-03-2012 16:15 » 

Есть три пути:
1. Признать Windows кривым продуктом и на этом успокоиться.
2. Поставить серию экспериментов и на основе них вывести правила.
3. Почитать MSDN.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sss
Специалист

ru
Offline Offline

« Ответ #11 : 13-03-2012 03:07 » 

dimaslviv, попробуй код

Код: (C++)
char command[] = "\"\"D:\\gzi p.exe\" -d \"D:\\file 5.js.gz\"\"";
system(command);
 
Записан

while (8==8)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines