thomas.1978
Goto Top

Per Batch bestimmte Anzahl an Dateien zippen

Guten Abend liebe Community,
ich habe folgende Frage:
Ich habe in einem Ordner ca. 850 Dateien.

Und ich wollte gerne immer nur jeweils 100 Dateien zippen und dann als 1.zip im selben Ordner speichern.
Und dann die nächsten 100 Dateien als 2.zip speichern, bis am Ende alle Dateien gezippt sind.
So daß am Ende es 9 Zip Dateien sind.

Die Original Dateien sollten bitte trotzdem im Ordner bleiben face-smile

Ich habe Windows 10 und habe auch 7-Zip Installiert.

Ich bin über jede Batch oder Powershell Hilfe dankbar.
Auch über jeden Link hier im Forum wo diese Frage/Antwort schon zu finden ist.

Vielen Dank.

Gruß

Thomas

Content-Key: 2733359189

Url: https://administrator.de/contentid/2733359189

Printed on: April 26, 2024 at 03:04 o'clock

Member: mbehrens
mbehrens May 09, 2022 at 21:05:09 (UTC)
Goto Top
mal ins Unreine:
Set-Variable setSize -option Constant -Value 33
$i = 0
$zipSet = 0

Get-ChildItem .\ | ForEach-Object {
    $zipSetName = "archive" + ($zipSet + 1) + ".zip"  
    Compress-Archive -Path $_.FullName -Update -DestinationPath ".\$zipSetName"  
    $i++;

    if ($i -eq $setSize) {
        $i = 0;
        $zipSet++;
    }
}
Member: colinardo
Solution colinardo May 09, 2022 updated at 22:28:56 (UTC)
Goto Top
Servus.
Powershell:
# max size of each set
$max = 100
# folder with files
$folder = 'E:\Dateien'  
# get all files of folder (since we only need the path of all files, this variant is way faster then Get-ChildItem)
$files = [IO.Directory]::GetFiles($folder)
# initialize counters
$done = 0;$cnt = 1
# loop until all files are zipped
while($done -lt $files.count){
    # zip set of $max number of files
    $files | select -skip $done -First $max | compress-archive -Destinationpath "$folder\$('{0:D2}' -f $cnt).zip"  
    $cnt++; $done += $max
}
Grüße Uwe
Member: Thomas.1978
Thomas.1978 May 10, 2022 at 14:34:21 (UTC)
Goto Top
Hallo Uwe,
vielen Dank für deine Hilfe.
Powershell läuft bestens face-smile

Gruß

Thomas