【问题标题】:How to zip all the files in a folder individually?如何单独压缩文件夹中的所有文件?
【发布时间】:2016-03-22 03:13:15
【问题描述】:

在 powershell 中,我应该如何单独压缩文件夹中的所有文件?例如,我在一个文件夹中有 10 个文件,这意味着我想要有 10 个 zip。

以下是我的代码,但它只压缩一个文件。

Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.IO.Compression.FileSystem.dll"
function ZipFiles( $zipfilename, $sourcedir )
{
   Add-Type -Assembly System.IO.Compression.FileSystem
   $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
   [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
        $zipfilename, $compressionLevel, $false)
}

ZipFiles "zippath" "sourcepath"

【问题讨论】:

  • 循环执行?
  • @ivan_pozdeev 你介意展示一些示例代码吗?我是 powershell 新手
  • @johndoe 我的回答有帮助吗?您需要更好地解释我是如何获得答案的吗?

标签: powershell


【解决方案1】:
  1. 所以我们得到一个路径中的文件夹列表(-Directory 只返回文件夹)
  2. 然后对于文件夹列表中的每个文件夹,我们将其传递给 ZipFiles 函数
  3. 函数调用如下所示:ZipFiles "C:\Logs.zip" "C:\Logs"

    $folderlist = Get-ChildItem -Path C:\ -Directory
    Foreach ($Folder in $folderlist)
    {ZipFiles "$($Folder.Fullname).zip" "$($Folder.Fullname)"}
    

【讨论】:

  • ZipFiles :术语“ZipFiles”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:3 char:2 + {ZipFiles "$($Folder.Fullname).zip" "$($Folder.Fullname)"} + ~~~~~~~~~ + CategoryInfo : ObjectNotFound: (ZipFiles:String) [],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
  • @Andrey 阅读我正在回答的完整问题,您将在其中看到提问者定义了函数。请务必了解堆栈溢出中的答案是针对某人提出的特定问题,而不是针对某人可能遇到的所有可能用例。
【解决方案2】:

这是我刚刚使用的单行程序,它使用文件名和附加的 .zip 扩展名压缩当前目录中的所有文件

 Get-ChildItem "." | ForEach-Object { Compress-Archive -path $_.Name -destinationPath "$($_.Name).zip"}

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多