Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Winrar`ом, какую ему задать строку 
V
    Опции темы
Akella
Дата 30.8.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Программно архивирую файлы.

Подскажи такую весчичку по winrar`у:

есть главная папка вида :
D:\Programs\Kvartal\PhotoManager\Новая папка\квартиры\52768
в этой главной папке есть ещё 2 подпапки, в каждой из двух подпапок есть по несколько файлов,
нужно создать архив, чтобы внутри было только эти 2 папки и каждая со своими файлами, какую команду дать винрару?
я пишу:
Winrar a -ep имяАрхива "Путь к главной папке\*.*"

или так
Winrar a -ep имяАрхива "Путь к главной папке\"

а вот если кинуть в главную папку файлы, то всё в порядке, НО упаковывает только эти файлы, те две подпапки не трогает

ключ -R не помогает, т.к. всё архивируется, НО без папок.
короче в архиве хотелось бы видеть:
папка1\файл1
папка1\файл2
папка1\файл3
папка2\файл1
папка2\файл2
файл1
файл2

такой вариант не устраивает:
D:\Programs\Kvartal\PhotoManager\Новая папка\квартиры\52768\папка1\файл1 
 smile  smile  smile 

Код

//функция запуска и ожидания архивирования
         fmMain.ExecAndWait(fmMain.sWinrar,
                            'a -r -ep '+ sArcName + ' "' + IncludeTrailingPathDelimiter(dir+SearchRec.Name)+'*.*"',

                             edOut.Text,
                             0);


Код

function TfmMain.ExecAndWait(const FileName, Params: ShortString; ArcDir:string;
                               const WinState: Word): boolean; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: ShortString;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := '"' + Filename + '" ' + Params;

  //ShowMessage(CmdLine);

  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := WinState;
  end;//with
  try
    Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
                            CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                            PChar(ArcDir),StartInfo,ProcInfo);
  except
    result := false;
  end;
  { Ожидаем завершения приложения }
  if Result then  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;//if Result then  begin
end;

PM MAIL   Вверх
Snowy
Дата 30.8.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Добавь глючик -r
PM MAIL   Вверх
Akella
Дата 30.8.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



если открыть проводник, щелкнуть по папке 52768 правой кнопкой и выбрать меню винрара "добавить в архив", то внутренняя структура архива получается такая как надо

Добавлено через 58 секунд
Snowy, я ж писал, что ключик R не помогает, т.к. получается так:

файл1
файл2
файл3
файл1
файл2
файл1
файл2

а должно быть так:
папка1\файл1
папка1\файл2
папка1\файл3
папка2\файл1
папка2\файл2
файл1
файл2
PM MAIL   Вверх
Snowy
Дата 30.8.2007, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Так ты убери -ep
И перейди в папку упаковки и пакуй просто *.*, а не папка\*.*

Добавлено через 1 минуту и 13 секунд
Хотя нет, просто замени -ep на -ep1
PM MAIL   Вверх
Akella
Дата 30.8.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Snowy, СУПЕР
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.