在PowerShell中压缩文件夹的一行?

时间:2012-03-01 17:29:57

标签: powershell command-line

我正在寻找等效的PowerShell命令:

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

是否存在从文件夹中创建zip文件以递归方式添加source-folder的内容,这不需要像7-zip这样的第三方库?

2 个答案:

答案 0 :(得分:6)

Powershell 5开始,您可以使用内置的Compress-Archive命令:

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

如果您在版本5之前使用PowerShell,则没有没有像7-zip这样的第三方程序的单线程解决方案。但是,您可以利用通过COM Shell object公开的Windows资源管理器的内置压缩功能来构建您自己的PowerShell功能来执行此操作。 This page outlines the details关于如何做到这一点。

答案 1 :(得分:4)

实际上,有一个单行等效创建zip档案,甚至还有一个单行来创建完全匹配,即tar文件。您应该首先查找这样的库函数PowerShell Community Extensions,为PowerShell提供大量高质量的库扩展。遗憾的是,对于特定项目的网络搜索,例如您的zip创建功能,可能会发现任何内容,因为网站或文档中没有任何内容包含cmdlet列表和提供的功能!要了解您必须安装库,请执行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\