首页 > 解决方案 > Powershell,从目录中的前 100 个文件创建存档

问题描述

我想使用 PowerShell 和 7zip 在文件名称为数字的目录中创建一个存档文件,例如 1,并从文件 1 到 100 创建存档。然后从文件 101 到 200 创建第二个存档,依此类推到 100 '000(我在那个目录中有 100k 个文件)。

我怎样才能做到这一点?

标签: powershellarchive7zip

解决方案


试试这个例子:这将从一个目录中获取所有文件,并为每个 .zip 压缩 5 个文件。您可能需要根据您的要求调整部分代码(例如 5 到 100,5 用于测试较少的文件。)

Set-Location $PSScriptRoot

#UPDATE THIS VARIABLES ACCORDING YOUR NEEDS
$7zip = ".\packages\7zip\7za.exe"
$filesDir = ".\files"
$numberOfFilesPerZip = 5
#-------

$count = 0
$totalFile = 0

$filesToCompress = Get-ChildItem $filesDir
$zipFileName = "1_To_{0}" -f $numberOfFilesPerZip

foreach($file in $filesToCompress){
    $totalFile++
    $fileFullPath = $file.FullName

    if($count -lt $numberOfFilesPerZip){    
        $count++
    } else {
        $zipFileName = "{0}_To_{1}" -f $totalFile, ($totalFile + $numberOfFilesPerZip - 1)          
        $count = 1
    }

    Invoke-Expression -Command "$7zip a $zipFileName '$fileFullPath'"

}

输出将是

  • 1_To_5.7z
  • 6_To_10.7z
  • 11_To_15.7z
  • ...

推荐阅读