Одна строка для архивирования папки в PowerShell? - PullRequest
5 голосов
/ 01 марта 2012

Я ищу эквивалентную команду PowerShell для:

tar -zcvf tar-archive-name.tar.gz source-folder

Существует ли такой однострочник, который создает файл zip из папки, рекурсивно добавляя содержимое source-folder, для которого не требуется сторонняя библиотека, такая как 7-zip?

Ответы [ 2 ]

6 голосов
/ 01 марта 2012

Начиная с Powershell 5 , вы можете использовать встроенную команду Compress-Archive:

Compress-Archive -Path source-folder -DestinationPath archive-name.zip

Если вы используете powershell до версии 5, нет ни одного линейного решения без сторонней программы, такой как 7-zip.Тем не менее, вы можете использовать встроенные возможности архивирования Windows Explorer, предоставляемые через объект COM Shell , чтобы создать собственную функцию powershell для этого. Эта страница содержит подробные сведения о том, как это сделать.

4 голосов
/ 02 марта 2012

На самом деле, существует однострочный эквивалент, который создает zip-архивы, и есть даже однострочный для создания точного совпадения, то есть tar-файл. Первое место, где вы должны искать такую ​​библиотечную функцию - это PowerShell Community Extensions , предоставляющее множество высококачественных расширений библиотеки для PowerShell. К сожалению, веб-поиск определенного элемента, например вашей функции создания zip-файла, скорее всего , а не приведет к чему-либо, потому что нигде на сайте или в документации они не содержат список предоставленных командлетов и функций! Чтобы узнать, нужно ли установить библиотеку, выполните help about_pscx. Просматривая это, вы найдете то, что относится к вашему вопросу:

Write-Zip
    Create ZIP format archive files from pipline or parameter input. 
Write-GZip
    Create GNU ZIP (GZIP) format files from pipeline or parameter input. 
Write-Tar
    Create Tape Archive (TAR) format files from pipeline or parameter input. 

И вот, из их встроенных примеров, как вы можете их использовать:

PS> dir c:\logs\ -rec -inc *.log | write-zip -level 9 -removeoriginal
PS> dir c:\logs\ -rec -inc *.log | write-tar -output logs.tar | write-gzip -level 9 | move-item c:\archived_logs\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...