Russian Qt Forum
Сентябрь 27, 2024, 20:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Копирование файлов с помошью QProcess и cp! Проблема!!!  (Прочитано 18581 раз)
Radamas
Гость
« : Март 13, 2008, 13:33 »

пытаюсь скопировать все файлы из одного директория в другой с помощью QProcess и команды cp, но ничего не происходит, только изменяется дата изменения файлов! Директории все созданы и из терминала команда работает на все 100, а при помощи QProcess похоже копирует файлы в то же место где они и лежали! Помогите! версия Qt 3.3.3:

что делаю:

QProcess proc;
proc.addArgument("cp");
proc.addArgument("-f");
proc.addArgument("/Maps/Temp/*.*");
proc.addArgument("/Maps/Temp/1");
bool result = proc.start() //возвращает 1
while(proc.isRunning())
{
}

В чем проблема не пойму! Может есть другие простые методы копирования файлов?
Записан
Steven_Orko
Гость
« Ответ #1 : Март 13, 2008, 14:18 »

Проблемма в том, что не дочитал мануал по башу либо по cp. Ты не указал, какие файлы копировать.
А файла со звездочками не существует. Это баш вместо звездочек поставляет по маске, что найдет.
Так что тебе надо явно указать, какие файлы копировать.
Записан
Radamas
Гость
« Ответ #2 : Март 13, 2008, 16:53 »

Проблемма в том, что не дочитал мануал по башу либо по cp. Ты не указал, какие файлы копировать.
А файла со звездочками не существует. Это баш вместо звездочек поставляет по маске, что найдет.
Так что тебе надо явно указать, какие файлы копировать.

Спасибо большое:) я не догадался что в QProcess нельзя использовать *.*
Записан
BigHom
Гость
« Ответ #3 : Март 26, 2010, 15:23 »

Как записать результат выполния командной строки - в файл с помощью QProcess?
Записан
niXman
Гость
« Ответ #4 : Март 26, 2010, 15:29 »

Цитировать
cp file1.ext file2.ext > log.txt
Записан
BigHom
Гость
« Ответ #5 : Март 26, 2010, 15:38 »

Нет , скажем sl >a.a на QT -кажись должно :

QProcess proc;
proc.addArgument("sl");
proc.addArgument(">a.a");
bool result = proc.start() //возвращает 1
while(proc.isRunning())
{
}
  но почему-то ничего не записывает...в файл a.a
Записан
crossly
Гость
« Ответ #6 : Март 26, 2010, 15:46 »

а может стоит попробовать QFile....
Записан
niXman
Гость
« Ответ #7 : Март 26, 2010, 15:49 »

Нет , скажем sl >a.a на QT -кажись должно :

QProcess proc;
proc.addArgument("sl");
proc.addArgument(">a.a");
bool result = proc.start() //возвращает 1
while(proc.isRunning())
{
}
  но почему-то ничего не записывает...в файл a.a
вы о чем? и кто такой sl ?
Записан
BigHom
Гость
« Ответ #8 : Март 26, 2010, 16:05 »

"Команда ls сначала выводит список всех файлов (не каталогов), перечисленных в командной строке, а затем выводит список всех файлов, находящихся в каталогах, перечисленных в командной строке. " Мне нужно подсчитать контрольную сумму cd - диска и записать в файл. С помощью командной строки можно найти как это сделать  -  вопрос как записать в файл, чтоб потом в программе использовать? Для примера взял команду sl.
Записан
BigHom
Гость
« Ответ #9 : Март 26, 2010, 16:28 »

Перепутал , команда "ls" -  Я так думаю что подсчёт контрольной суммы : ls /mnt/cdrom -a |md5sum >a.a
Только почему-то ничего не записывает в файл . Поэтому упростил до: ls >a.a но всё равно с помощью QProcess ничего не записалось в файл...
Записан
crossly
Гость
« Ответ #10 : Март 26, 2010, 16:31 »

пайпы и команды перенаправления ввода-вывода с QProcess не работают...
используй
Код:
void QProcess::readyReadStdout () [signal]
и пиши потом это куда тебе надо...
Записан
BigHom
Гость
« Ответ #11 : Март 29, 2010, 09:11 »

Не совсем понял как писать , откуда считывать? Можно пример?
Записан
crossly
Гость
« Ответ #12 : Март 29, 2010, 12:28 »

это сигнал.... его испускает QProccess при проявлении данных в нем.... напиши слот.... соедини его сигналом.... и в нем читай данные..
Записан
BigHom
Гость
« Ответ #13 : Март 29, 2010, 15:00 »

Сигнал посылаю - данные давай , а нас посылают обратно...
Записан
BigHom
Гость
« Ответ #14 : Март 29, 2010, 16:28 »

Пишу с помощью файла .ui.h , поэтому если бы сигнал был бы от кнопки или ещё чего-нибудь , то подсоединил бы... а тут сигнал от QProcess  поискал в примерах , там дано в таком виде:
   QProcess proc7;
...
   proc7.addArgument("ls");
   proc7.addArgument(">a.a");
   connect( proc7, SIGNAL(proc7.readyReadStdout()),
           this,   SLOT(readFromStdout())      );

void MyDialog2::readFromStdout()
{
//    textEdit->append( proc7->readStdout() );
}

При компиляции выдаёт ошибку:


c:\Qt\myd290310\MyDialog2.ui.h(1149): error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *)' : cannot convert parameter 1 from 'QProcess' to 'const QObject *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.104 секунд. Запросов: 20.