Архивация файлов в папке

  • Автор темы Автор темы arthyrgrex
  • Дата начала Дата начала

arthyrgrex

Client
Регистрация
12.05.2013
Сообщения
104
Реакции
31
Баллы
28
Ребята, подскажите пожалуйста C# код, с помощью которого можно заархивировать файлы в папке в archiv.zip

У меня что-то не получается:
Код:
Развернуть Свернуть Копировать
return System.IO.Compression.ZipFile(project.Variables["files"].Value);

И если я правильно понимаю, в переменной "files" должен содержаться полный путь к файлам?

Заранее благодарен!
 
поищи по форуму, недавно такая тема была, только не знаю вышло там у человека что нить или нет
 
Я уже искал (архив\сжатие\архивация\запаковать\сжать) - ничего подобного не нашел
 
Если нужно заархивировать файлы в папке то вот такой код:
Код:
Развернуть Свернуть Копировать
var path1 = project.Variables["Directory"].Value; // путь к папке с файлами
var path2 = project.Variables["Archive"].Value; //путь к файлу архива
System.IO.Compression.ZipFile.CreateFromDirectory(path1, path2);
 
Все таки сделал через бат файл:

- создаем zip.bat
- кладем его в папку с файлами, которые нужно заархивировать
- в .bat файле пишем:
Код:
Развернуть Свернуть Копировать
"c:\Program Files\7-Zip\7z.exe" a "archiv.zip" -r "*.html"
где:
"c:\Program Files\7-Zip\7z.exe" - полный путь к архиватору
a "archiv.zip" - указываем название архива
-r "*.html" - указываем какие файлы брать (расширение). Если вам нужно взять просто все файлы, пишем так: -r "*", но тогда запакуется и бат файл.

В зенке батник запускаем через экшен "Запуск программы":
Снимок.PNG
Все отлично работает.
 
А что с кодом не получилось? Там наверное нужно еще добавить файл System.IO.Compression.FileSystem в сборку из GAC (Свой код>Ссылки из GAC)
 
А что с кодом не получилось? Там наверное нужно еще добавить файл System.IO.Compression.FileSystem в сборку из GAC (Свой код>Ссылки из GAC)
Вот я как раз таки и запаролся на этом моменте - начал искать библиотеку в GAC, чтобы подключить её и не нашел.

Как она точно называется?
 
Последнее редактирование:
моя версия зенки 5.8.0.1
все что у меня есть:
Снимок.PNG
 
Кстати, есть вариант чтобы не разбираться с параметрами. Профиль по умолчанию в виниаре. И простое указание пути все само сделает и переименует и запакует
 
Все таки сделал через бат файл:

- создаем zip.bat
- кладем его в папку с файлами, которые нужно заархивировать
- в .bat файле пишем:
Код:
Развернуть Свернуть Копировать
"c:\Program Files\7-Zip\7z.exe" a "archiv.zip" -r "*.html"
где:
"c:\Program Files\7-Zip\7z.exe" - полный путь к архиватору
a "archiv.zip" - указываем название архива
-r "*.html" - указываем какие файлы брать (расширение). Если вам нужно взять просто все файлы, пишем так: -r "*", но тогда запакуется и бат файл.

В зенке батник запускаем через экшен "Запуск программы":
Посмотреть вложение 9249
Все отлично работает.

Всё работает.
Но когда архивируешь несколько тысяч файлов зенка выходит по ошибке.
Ставил задержку до 300 секунд, всё равно ошибка.
Как сделать, чтобы следующее действие не выполнялось, до тех пор, пока зенка не дождётся ответа от архиватора?
hJXVFsd.jpg
 
Как сделать, чтобы следующее действие не выполнялось, до тех пор, пока зенка не дождётся ответа от архиватора?
Запускать не батник, а архиватор напрямую.
 
Если нужно заархивировать файлы в папке то вот такой код:
Код:
Развернуть Свернуть Копировать
var path1 = project.Variables["Directory"].Value; // путь к папке с файлами
var path2 = project.Variables["Archive"].Value; //путь к файлу архива
System.IO.Compression.ZipFile.CreateFromDirectory(path1, path2);
Код работает. Создаёт архив. все как надо но код завершаться ошибкой
Выполнение действия CSharp OwnCode. Процесс не может получить доступ к файлу , так как этот файл используется другим процессом.

как это победить ?
 
Код:
Развернуть Свернуть Копировать
var path1 = project.Variables["Directory"].Value; // путь к папке с файлами
var path2 = project.Variables["Archive"].Value; //путь к файлу архива
System.IO.Compression.ZipFile.CreateFromDirectory(path1, path2);


Парни, все файлы из каталога успешно пакуются.
Но если в каталоге расположены еще папки, то их архивация не происходит.

Может кто подсказать как запаковать содержимое каталога с внутренними папками? ;-)
* только через 7-zip ?

UP: решил с помощью 7z.exe
 
Последнее редактирование:
Когда архиватор встроят в ZennoPoster?
 
  • Спасибо
Реакции: prostors
Ошибка в действии "CS0234" "The type or namespace name 'ZipFile' does not exist in the namespace 'System.IO.Compression' (are you missing an assembly reference?)". [Строка: 3; Cтолбец: 1]

вот такая ошибка сейчас
 
А что с кодом не получилось? Там наверное нужно еще добавить файл System.IO.Compression.FileSystem в сборку из GAC (Свой код>Ссылки из GAC)
добавил это, теперь пишет
пишет Отказано в доступе по пути "D:\...".
с этим что делать
 
пишет Отказано в доступе по пути "D:\...".
с этим что делать

нужно было полный путь прописывать, с названием файла и расширением zip во второй строке
var path2 = project.Variables["Archive"].Value; //путь к файлу архива
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)