Powershell и zip
Что может быть проще, чем создать архив? Берешь и делаешь! А если скриптом? Раньше я архивы делал с помощью WinRar, вроде было удобно с одной стороны. Не удобно становилось, когда на компьютере отсутствовал WinRar. Потом из за платности, перешел на 7zip… Но мудрость подсказывала, что должно быть решение в коде и оно нашлось.
1 |
Compress-Archive -Path $Source -CompressionLevel Fastest $Destination |
Вот и самый простой архив формата zip мы легко получаем. Powershell сумел сделать архив в одну строчку кода, что еще нужно для счастья?!
Жил я счастливый до поры до времени, пока не встретил на пути:
1 2 3 4 |
+ FullyQualifiedErrorId : RemoveFileSystemItemArgumentError,Microsoft.PowerShell.Commands.RemoveItemCommand Исключение при вызове "Write" с "3" аргументами: "Превышена допустимая длина потока." C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive\Microsoft.PowerShell.Archive.psm1:81 9 знак:29 |
Оказалось, что архивы больше 2 Гб он делать не умеет! :sos:
Но под руку подвернулся модуль 7Zip4PowerShell который прекрасно с этим справляется!
И так, теперь ставим модуль (не забываем об запуске консоли от имени админа):
1 |
Install-Module -Name 7Zip4PowerShell -Verbose |
Пробуем создать архив:
1 |
Compress-7Zip -Path $Source -ArchiveFileName $Destination -Format Zip |
У меня правда пример был посложнее, но тоже внятно!
1 2 3 |
$Source = "C:\DLL\*.cfg" $Destination = "C:\DLL\archive.zip" dir $Source | Compress-7Zip -ArchiveFileName $Destination -Format Zip |
10 Гб спокойно ужались в zip до 4 Гб.
Один комментарий
DJAnnet
kanitelka
Спасибо !