2012-03-01 221 views
5

我在寻找等价的PowerShell命令:单行在PowerShell中压缩文件夹?

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

会有这样一个班轮存在,创建一个文件夹递归添加source-folder的内容,并不需要一个第三一个zip文件像7-zip这样的派对图书馆?

回答

4

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

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

如果使用之前版本5 PowerShell中,有没有像7-ZIP第三方程序中没有一个班轮解决方案。但是,您可以利用通过COM Shell object公开的windows explorer中内置的压缩​​功能来构建自己的PowerShell功能来执行此操作。 This page outlines the details关于如何这样做。

+0

能否请你告诉7-拉链sloution。谢谢 – 2018-01-10 17:41:14

+1

@ F505您现在可以直接在PS中执行此操作,请参阅最新的答案。 – zdan 2018-01-10 18:26:24

+0

@ F505您正试图从档案中提取,而不是创建一个档案。我不认为内置的PowerShell存档功能支持gzip。试着问一个单独的问题。 – zdan 2018-01-10 23:12:01

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\ 
+1

这些功能目前在PSCX 2.1及更高版本中被破解。没有ETA正在修复。 – Encryption 2014-10-28 02:42:53