【问题标题】:One-line for zipping folder in PowerShell?在PowerShell中压缩文件夹的一行?
【发布时间】:2012-03-01 17:29:56
【问题描述】:

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

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

是否存在这样的单行程序,它从文件夹创建一个 zip 文件,递归地添加 source-folder 的内容,不需要像 7-zip 这样的第 3 方库?

【问题讨论】:

    标签: powershell command-line


    【解决方案1】:

    以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 了解如何操作。

    【讨论】:

    • @F505 您现在可以直接在 PS 中进行操作,请参阅更新后的答案。
    • @F505 您正在尝试从存档中提取,而不是创建存档。我不认为内置的 powershell 归档功能支持 gzip。尝试提出一个单独的问题。
    【解决方案2】:

    实际上,有一个等价物可以创建 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\
    

    【讨论】:

    • 这些功能目前在 PSCX 2.1 及更高版本中被破坏。修复中没有预计到达时间。
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2011-10-04
    • 2021-09-13
    • 2014-06-12
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多