如何单独压缩文件夹中的所有文件?
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到一个压缩文件中
如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件
批处理winrar命令 ,如何批量解压缩到每个单独的文件夹?
压缩文件后(它们从 Visual Studio 中的文件路径引用打开),如何让我的应用程序从单独的 Winform 打开? (C#)