- Регистрация
- 04.04.2015
- Сообщения
- 3 835
- Реакции
- 3 564
- Баллы
- 113
Пакетная архивация файлов
Где это может пригодится? Например:
Для этой цели мы будем использовать архиватор 7zip, который является бесспорным лидером по качеству компрессии. Да и к тому же он бесплатный
Переходим сюда: http://www.7-zip.org/download.html
И скачиваем 7-Zip Command Line Version
Извлекаем 7za.exe в любую директорию, например, в корень диска C:\, а далее мы поиграемся с командами управления, выполнять которые мы можем, как через Свой код -> Запуск программы, так и через C# кубик.
1 вариант:
«Исполняем файл» - Здесь мы указываем путь до 7za.exe, который мы распаковали ранее.
«Параметры запуска» - А тут расположатся наши команды-параметры (далее Аргументы).
2 вариант:
В проекте должны быть созданы переменные: saveDir, command, zipName и source.
Создание архива
Создание архива начинается с команды «a»
Для архивации файлов readme.txt и movie.avi в директории /home/, строка будет выглядеть следующим образом:
Если необходимо положить в архив файлы определенного формата, можете воспользоваться маской *.расширение. Чтобы положить все файлы txt и xlsx формата, находящиеся в папке /home/, выполним:
Или же может возникнуть обратная ситуация – исключить некоторые файлы (например, все файлы формата logs), тогда аргументы примут следующий вид:
Для упаковки всего содержимого директории /home/, пишем:
Архив будет создан в подпапке «Список архивов» корневой директории шаблона.
Можно использовать абсолютный/относительный путь, если не хотите сохранять по стандартному пути, например:
или
В случае архивации всей директории, не следует указывать путь, как ./home/*, поскольку файлы/папки типа ./home/.htaccess не будут добавлены в архив.
Дополнительные опции архивирования
-r включает рекурсию
-ssw принудительная упаковка файло
-t устанавливает формат архива на выходе
Например, -t7z выдаст 7z архив (используется по умолчанию).
Также доступны и другие форматы: zip, tar, gzip, wim, xz и bzip2.
-mx эта опция отвечает за метод компрессии (за качество сжатия):
Как все это будет выглядеть:
-v нужно разделить архивы на части? Не проблема!
Для тонкой настройки процесса архивации, можно использовать параметры -mfb -md –ms:
Требуется защита архива?:
Извлечение архива
Распаковка архива начинается с команды «x»
Извлечь архив в подпапку «Список архивов» корневой директории шаблона:
Если архив разбит на несколько частей (томов), используйте самый первый:
Для того, чтобы извлечь содержимое в другую директорию, воспользуйтесь командой -o
Просмотр содержимого архива
Чтобы посмотреть содержимое архива, используется команда «l»
Ознакомиться со всеми возможностями и командами можно через командую строку: 7za.exe –help или по ссылке: http://www.dotnetperls.com/7-zip-examples
Где это может пригодится? Например:
- Можно по завершению работы шаблона упаковывать результат в архив и отправлять на почту (себе или клиенту).
- Бекапы Hot!
- Для последующей загрузки (например, на FTP)
Для этой цели мы будем использовать архиватор 7zip, который является бесспорным лидером по качеству компрессии. Да и к тому же он бесплатный

Переходим сюда: http://www.7-zip.org/download.html
И скачиваем 7-Zip Command Line Version
Извлекаем 7za.exe в любую директорию, например, в корень диска C:\, а далее мы поиграемся с командами управления, выполнять которые мы можем, как через Свой код -> Запуск программы, так и через C# кубик.
1 вариант:
«Исполняем файл» - Здесь мы указываем путь до 7za.exe, который мы распаковали ранее.
«Параметры запуска» - А тут расположатся наши команды-параметры (далее Аргументы).
2 вариант:
Код:
var process = new System.Diagnostics.Process {
StartInfo = new System.Diagnostics.ProcessStartInfo {
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
FileName = "cmd.exe",
WorkingDirectory = project.Directory+"\\"+project.Variables["f_output"].Value,
Arguments = @"/c C:\7za.exe "
+project.Variables["command"].Value+" "
+project.Variables["zipName"].Value+" "
+project.Variables["source"].Value
+" | findstr /I /P /V \"Compressing 7-Zip\""
}
};
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
process.Dispose();
return output;
В проекте должны быть созданы переменные: saveDir, command, zipName и source.
- saveDir – рабочая папка;
- command – набор параметров (аргументов);
- zipName – название архива;
- source – путь к файлам, которые будем архивировать.
Создание архива
Создание архива начинается с команды «a»
Для архивации файлов readme.txt и movie.avi в директории /home/, строка будет выглядеть следующим образом:
Код:
a название_архива.7z и /home/ readme.txt /home/movie.avi
Если необходимо положить в архив файлы определенного формата, можете воспользоваться маской *.расширение. Чтобы положить все файлы txt и xlsx формата, находящиеся в папке /home/, выполним:
Код:
a название_архива.7z /home/*.txt /home/*.xlsx
Или же может возникнуть обратная ситуация – исключить некоторые файлы (например, все файлы формата logs), тогда аргументы примут следующий вид:
Код:
a название_архива.7z –r -x!*.logs /home/
Для упаковки всего содержимого директории /home/, пишем:
Код:
a название_архива.7z /home/
Архив будет создан в подпапке «Список архивов» корневой директории шаблона.
Можно использовать абсолютный/относительный путь, если не хотите сохранять по стандартному пути, например:
Код:
a C:/архивы/название_архива.7z
Код:
a /котики/название_архива.7z
В случае архивации всей директории, не следует указывать путь, как ./home/*, поскольку файлы/папки типа ./home/.htaccess не будут добавлены в архив.
Дополнительные опции архивирования
-r включает рекурсию
-ssw принудительная упаковка файло
-t устанавливает формат архива на выходе
Например, -t7z выдаст 7z архив (используется по умолчанию).
Также доступны и другие форматы: zip, tar, gzip, wim, xz и bzip2.
-mx эта опция отвечает за метод компрессии (за качество сжатия):
- -mx0 - Без компрессии
- -mx1 - Очень быстрая компрессия
- -mx3 - Быстрая компрессия
- -mx5 - Нормальная компрессия
- -mx7 - Максимальная компрессия
- -mx9 - Ультра компрессия
Как все это будет выглядеть:
Код:
a -t7z –ssw –mx7 –rназвание_архива /home/
-v нужно разделить архивы на части? Не проблема!
- b – байты
- k – килобайты
- m – мегабайты
- g – гигабайты
Код:
a -t7z –ssw –mx5 –v1024k название_архива /home/
Код:
a -t7z –ssw –mx5 –v7m название_архива /home/
Код:
a -t7z –ssw –mx5 –v3g название_архива /home/
Для тонкой настройки процесса архивации, можно использовать параметры -mfb -md –ms:
- -mfb=64 – кол-во байт в конце (для LZMA алгоритма)
- -md=32m – устанавливает размер словаря равным 32мб
- -ms=on – включает «непрерывный архив»
Код:
a -t7z –ssw –r –mx7 -mfb=64 -md=32m -ms=on название_архива /home/
Требуется защита архива?:
Код:
a -mhe=on -pzennolab название_архива.7z
- -pzennolab установит пароль «zennolab»
- -mhe=on разрешит криптование заголовков
Извлечение архива
Распаковка архива начинается с команды «x»
Извлечь архив в подпапку «Список архивов» корневой директории шаблона:
Код:
x название_архива.7z
Если архив разбит на несколько частей (томов), используйте самый первый:
Код:
x название_архива.7z.001
Для того, чтобы извлечь содержимое в другую директорию, воспользуйтесь командой -o
Код:
x название_архива.7z –o C:/тюлени/
Просмотр содержимого архива
Чтобы посмотреть содержимое архива, используется команда «l»
Код:
l название_архива.7z
Ознакомиться со всеми возможностями и командами можно через командую строку: 7za.exe –help или по ссылке: http://www.dotnetperls.com/7-zip-examples
- Номер конкурса статей
- Пятый конкурс статей
- Тема статьи
- Другое
Вложения
Последнее редактирование:





