Powershell, создайте архив из первых 100 файлов в каталоге - PullRequest
0 голосов
/ 24 августа 2018

Я хочу использовать PowerShell и 7zip, чтобы создать архивный файл в каталоге, где в имени файла указан номер, например, 1, и создать архив из файлов с 1 по 100. Затем создайте второй архив из файлов с 101 по 200 и т. Д. до 100'000 (у меня есть 100k файлов в этом каталоге).

Как я могу это сделать?

1 Ответ

0 голосов
/ 24 августа 2018

Попробуйте этот пример: это позволит получить все файлы из каталога и сжать 5 файлов для каждого .zip.Возможно, вам придется адаптировать части кода к вашим требованиям (например, от 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
  • ...
...