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

问题描述 投票:0回答:4

在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"
powershell
4个回答
5
投票

这是我刚刚使用的一个单行代码,它使用文件名并附加 .zip 扩展名来压缩当前目录中的所有文件

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

2
投票

使用PowerShell进入您要压缩的路径,执行:

$folderlist = Get-ChildItem "."
foreach ($File in $folderlist) { Compress-Archive -path $File.Name -destinationPath "$($File.Name).zip"}

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)"}
    

0
投票

我尝试了一行命令 Get-ChildItem "." | ForEach-Object { Compress-Archive -path $.Name -destinationPath "$($.Name).zip"} 它可以工作,但它也保留以前的扩展名,例如,如果文件名是 abc.csv,它现在转换为abc.csv.zip 是否可以获取 abc.zip?

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.