crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Работа с командной строкой
Гость_Игорь_*
сообщение 29.10.2010, 20:04
Сообщение #1





Гости








    


Здравствуйте!
Подскажите как работать с командной строкой?
Я знаю что можно послать в командную строку команду, используя QProcess / system() , но проблема в том, что в нем нельзя послать сразу несколько команд. Т.е. если выполнять так:

system(dir);
system("pause");

то запустится командная строка, покажет содержимое в директории, потом закроется, запуститься новое и выполниться остановка. Как выполнить все команды в одном окне?
Как получать то, что выводит командная строка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 29.10.2010, 20:42
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(Игорь @ 30.10.2010, 2:04) *
Здравствуйте!
Подскажите как работать с командной строкой?
Я знаю что можно послать в командную строку команду, используя QProcess / system() , но проблема в том, что в нем нельзя послать сразу несколько команд. Т.е. если выполнять так:

system(dir);
system("pause");

то запустится командная строка, покажет содержимое в директории, потом закроется, запуститься новое и выполниться остановка. Как выполнить все команды в одном окне?
Как получать то, что выводит командная строка?

очень интересный вопрос. Только в какой системе выполнять надо ? Нет винды под рукой, но в линухе можно сделать так
system("dir;who;ls;read");

думаю, что под виндой то же самое или похожее. read в конце, это типа пауза :)
Опять же, получение чего выводит командная строка. В линухе закрываешь stdout и stderr и открываешь либо файл, либо pipe. Дескриптор 1 и 2. Оттуда и берешь. В винде надо пробовать, смотреть. Но по моему несколько лет назад я делал то же под 2000 виндой на борланде и прокатило

Сообщение отредактировал maint - 29.10.2010, 20:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.10.2010, 20:47
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а так если

system("dir\r\npause");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Игорь_*
сообщение 29.10.2010, 21:00
Сообщение #4





Гости








    


Я пробую на windows(е)
Вариант "system("dir\r\npause");" никак не срабатывает. Только первая команда работает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Игорь_*
сообщение 29.10.2010, 21:02
Сообщение #5





Гости








    


system("dir;who;ls;read"); тоже не работает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.10.2010, 21:15
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Игорь @ 29.10.2010, 22:02) *
system("dir;who;ls;read"); тоже не работает

system("dir&&who&&ls&&read");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.10.2010, 21:22
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


BRE, класс ))

system("dir&&pause"); - это тоже работает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Игорь_*
сообщение 29.10.2010, 21:22
Сообщение #8





Гости








    


system("dir&&who&&ls&&read"); Сработало,но и сразу же наткнулся на следующую проблему, а как отвечать на запросы?
То есть если в командной строке надо ввести какое-то имя файла или ответить Y или N, то как и это выполнить программно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.10.2010, 21:24
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Игорь, ты уж определись, тебе надо одну команду выполнить или консоль открыть и там работать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Игорь_*
сообщение 29.10.2010, 21:31
Сообщение #10





Гости








    


Мне надо выполнить несколько операций без вмешательств пользователя и получить в переменную что выводит консоль
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:24