Powershell,从目录中的前100个文件创建档案

时间:2018-08-24 09:53:34

标签: powershell archive 7zip

我想使用PowerShell和7zip在目录中创建一个归档文件,其中文件名是数字(例如1),然后从文件1到100创建归档。然后从文件101到200创建第二个归档,依此类推到100'000(该目录中有10万个文件)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

尝试以下示例:这将从目录中获取所有文件,并为每个.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
  • ...