4 / 4 / 2
Регистрация: 18.10.2011
Сообщений: 89
1

Архивация папки ч/з WinRar

24.08.2012, 07:52. Показов 3841. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
Есть следующий код.
Не могу разобраться, нужно заархивировать папку, после архивации удалить эту папку?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var
{rar: string;}
 
Rlst: LongBool; //результат выполнения
StartUpInfo: TStartUpInfo; //параметры будущего процесса
ProcessInfo: TProcessInformation; //Отслеживание выполнения
 
CurrDir:string; //текущая папка
ArchiveDir:string; //папку куда складываем архивы
AppToRun:string; //путь до winrar
CommandLine:string; //строка параметров
filename:string; //имя файла
Error:integer; //номер ошибкок
ExitCode: Cardinal; //код завершения
 
begin
//Определяем текущюю директорию.
CurrDir:= ExtractFilePath(Application.ExeName);
 
//Определяем путь к WinRAR.
AppToRun:='C:\Program Files\WinRAR\WinRar.exe';
 
//Проверяем, есть ли в текущей директории программы, папка Archive.
//Если нет - создаем.
If not DirectoryExists(CurrDir+'Archive') then
MkDir(CurrDir+'Archive');
 
//Открываем выбор файла для архивирования.
//Если выбрали, то обрабатываем.
//В FileName записываем полный путь к выбранному файлу
filename:=DirB; //   DirB= C:\TestDir\7_1_1_24082012\
 
//В CommandLine записываем командную строку
//В нашем случае командная строка должна выглядеть:
//<пробел> a -ep "<путь до архива>" "<путь до файла>"
CommandLine:=' a m -ep " "'+CurrDir+'Archive\'+ExtractFileDir(filename)+'.rar" "'+filename+'"';
 
//Заполнение нулями всего StartUpInfo.
FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
//После этого выставляем в нем некоторые параметры.
with StartUpInfo do
begin
//Содержит количество байтов, занимаемых структурой TStartUpInfo.
//Обязательно для заполнения. Инициализируйте как SizeOf(TStartUpInfo).
cb := SizeOf(TStartUpInfo);
//Содержит набор флагов, позволяющих управлять созданием дочернего процесса.
//Показываем окно, курсор - часики.
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
//Определяет как должно выглядеть окно запущенного приложения.
//Нормальное отображение
wShowWindow := SW_SHOWNORMAL;
end;
 
//Сам запуск WinRAR с параметрами.
//По сути, мы запускаем следующее:
//WinRar.exe a -ep "<путь до архива>" "<путь до файла>"
showmessage(AppToRun+CommandLine);
Rlst:= CreateProcess(PChar(AppToRun), PChar(CommandLine),
nil, nil, false, NORMAL_PRIORITY_CLASS,
nil, nil, StartUpInfo, ProcessInfo);
 
//Отслеживаем выполнение.
//Если запуск успешен
if Rlst then
with ProcessInfo do
begin
//Ждем завершения инициализации.
WaitForInputIdle(hProcess, INFINITE);
//Ждем завершения процесса.
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
//Получаем код завершения.
GetExitCodeProcess(ProcessInfo.hProcess, ExitCode);
//Закрываем дескриптор процесса.
CloseHandle(hThread);
//Закрываем дескриптор потока.
CloseHandle(hProcess);
showmessage('Архивация завершена успешно');
end
//Иначе
else
begin
//В случае ошибки - выводим на экран сообщение.
Error := GetLastError;
MessageDlg(SysErrorMessage(Error), mtError, [mbOk], 0);
end;
end;
Добавлено через 1 минуту
Цитата Сообщение от Fedor82 Посмотреть сообщение
"'+CurrDir+'Archive\'+ExtractFileDir(filename)+'.rar"
Архиватор выдает ошибку в этом месте

Добавлено через 1 минуту
Как я понимаю нужно из пути извлеч название папки, но вот как?

Добавлено через 14 минут
Вопрос снят, всем спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2012, 07:52
Ответы с готовыми решениями:

Winrar для архивации папки частями
И снова здравствуйте) сегодня уже был вопрос по поводу копирования файлов. но сейчас возникла...

Архивация группы файлов путем WinRar
Доброго времени суток. Есть макрос, который работает, но почему-то не делает архив, бьюсь уже...

Архивация указанного файла в одноимённый архив с использованием WinRar
Здравствуйте! Помогите, пожалуйста. Необходимо создать bat файл, выполняющий архивирование...

Архивация папки с подпапками
Друзья, есть следующая структура /tmp/ - - - - Path1/ - - - - - - - - 1.txt - - - - - - - -...

1
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 17
15.05.2015, 10:05 2
Доброго времени суток, не осталось ли часом у вас рабочего кода проэкта? ибо сам столкнулся с подобным
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2015, 10:05
Помогаю со студенческими работами здесь

Архивация папки с файлами, созданной сегодня
Доброго времени суток! Написал батник для резерного копирования, создает папку с именем текущей...

Архивация папки с определенным списком подпапок
Здравствуйте. Допустим: имеется папка (А1), в которой находится куча подпапок (В1, В2, В3, В4...

Архивация файла/папки в несколько томов
Здравствуйте. Есть задача заархивировать некий файл/папку, причем должно быть несколько томов. Как...

Архивация папки без дополнительных .dll файлов
Как, собственно, заархивировать папку с помощью c# так, чтобы окончательное приложение состояло...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru