如何单独压缩文件夹中的所有文件?

Posted

技术标签:

【中文标题】如何单独压缩文件夹中的所有文件?【英文标题】: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 我的回答有帮助吗?您需要更好地解释我是如何获得答案的吗? 【参考方案1】:
    所以我们得到一个路径中的文件夹列表(-Directory 只返回文件夹) 然后对于文件夹列表中的每个文件夹,我们将其传递给 ZipFiles 函数

    函数调用如下所示: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"

【讨论】:

以上是关于如何单独压缩文件夹中的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在bash中将所有子目录中的所有文件gzip到一个压缩文件中

Python:压缩目录中的所有文件夹

如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件

批处理winrar命令 ,如何批量解压缩到每个单独的文件夹?

压缩文件后(它们从 Visual Studio 中的文件路径引用打开),如何让我的应用程序从单独的 Winform 打开? (C#)

WinRAR如何批量分别压缩不同的文件夹