Wie kann ich alle 10 Dateien in einem Ordner als separate ZIP-Datei komprimieren?

1736
Lafix

Ich bin unter Windows 10 und versuche es mit Winrar zu klären. Der Ordner enthält 500 Dateien, ich möchte jede 10 davon als separate zip / rar-Datei komprimieren und 50 zip / rar-Dateien erstellen.

Gibt es eine Möglichkeit, es nicht manuell auszuführen?

2

3 Antworten auf die Frage

1
Berend

Hier ist ein Skript zum Einstieg. Ich muss zugeben, dass ich mit der Befehlszeile rar nicht vertraut bin, daher müssen Sie dies möglicherweise anpassen.

@echo off Setlocal EnableDelayedExpansion  :: Folder containing files set input=D:\temp :: Folder for zips set output=D:\output :: Temp filename to hold list of 10  set listfile=%temp%\listfile :: Zip counter set z=1 :: Files per zip set n=10  cd /d %input%  if exist %listfile% del %listfile%  set i=0  for %%f in (*.*) do ( set /a i=!i! + 1 echo %%f >> %listfile%  if !i!==%n% ( rar a %output%\!z!.rar @%listfile% set i=0 set /a z=!z! + 1 del %listfile% ) )  :: Process remaining files, if any if exist %listfile% ( rar a %output%\!z!.rar @%listfile% del %listfile% ) 
1
mguassa

Mein Vorschlag wäre, so etwas wie ein benutzerdefiniertes Skript zu verwenden, das Ihnen auch eine gute Flexibilität gibt.

Da Sie Windows verwenden, entwickeln ich schnell einen einfachen Powershell - Skript für Sie, die selbst nicht WinRAR erfordern .

Erstellen Sie eine .ps1- Textdatei (z. B. Create-MultiZip.ps1 ) mit folgendem Inhalt:

param ( # The input folder containing the files to zip [Parameter(Mandatory = $true)] [string] $InputFolder,  # The output folder that will contain the zip files [Parameter(Mandatory = $true)] [string] $OutputFolder )  Set-Variable SET_SIZE -option Constant -value 10 $i = 0 $zipSet = 0  Get-ChildItem $InputFolder | ForEach-Object { $zipSetName = "archive" + ($zipSet + 1) + ".zip" Compress-Archive -Path $_.FullName -Update -DestinationPath "$OutputFolder\$zipSetName" $i++;  if ($i -eq $SET_SIZE) { $i = 0; $zipSet++; } } 

Führen Sie es dann in einer PowerShell-Umgebung aus und geben Sie den Ordner an, der die zu zipierenden Dateien enthält, gefolgt von dem Ordner, der die ZIP-Dateien enthält. Zum Beispiel:

Create-MultiZip.ps1 C:\tmp\input C:\tmp\output 

Was macht das Skript?
Grundsätzlich wird eine Liste aller Dateien im Eingabeordner abgerufen. Anschließend wird jede Datei der Datei archive1.zip im Ausgabeordner hinzugefügt, bis die vorgegebene Satzgröße erreicht ist. An diesem Punkt wird eine neue Datei " archive2.zip " erstellt (genauso wie zuvor ... usw.), bis alle eingegebenen Dateien verarbeitet wurden.
Beachten Sie, dass die resultierenden Dateien aufgerufen werden archive<n>.zip, wobei ndie progressive Nummer für jede ZIP-Datei steht.

Das Herzstück des Skripts ist das Cmdlet . Es wurde kürzlich mit PowerShell 5.0 eingeführt, das standardmäßig in Windows 10 enthalten ist.Compress-Archive

Wenn Sie Powershell ein bisschen kennen, kann das Skript leicht verbessert werden, indem Sie zum Beispiel eine CompressionLeveloder eine Textausgabe zur Konsole hinzufügen .

Es ist auch einfach, die Anzahl der gewünschten Dateien in jedem Satz zu ändern. Sie müssen lediglich den konstanten Wert in der folgenden Zeile ändern:

Set-Variable SET_SIZE -option Constant -value 10 

Ich habe das Skript kurz getestet und es funktioniert gut - es ist selbstverständlich, dass Sie einige Testdateien zuerst ausprobieren sollten.

0
chingNotCHing

Dies verbessert die Lösung von mguassa, indem 500 Komprimierungsaktionen auf 50 reduziert werden.

$InputFolder = "c:\users\ching\Downloads\app" $OutputFolder = "c:\users\ching\Downloads\arc"  $filesPerZip = 10 $counter = [PSCustomObject] @{ Value = 0 }   $arcs = gci $InputFolder | ?{!$_.PsIsContainer} | group {[Math]::Floor($counter.Value++ / $filesPerZip)}  cd $InputFolder $OutputZipPrefix = $OutputFolder + "\" + ($InputFolder | Split-path -leaf)  foreach ($arc in $arcs) {  compress-archive $arc.group ($OutputZipPrefix + $arc.name + ".zip") } 

Die Ausgabe-ZIP-Dateien werden entsprechend dem Namen des Eingabeordners im Ausgabeordner als app0.zip, app1.zip, ... bezeichnet.

Jede ZIP-Datei wird in einem Durchgang erstellt. Dies kann die Verarbeitungszeit reduzieren und mögliche Fragmentierungen der Festplatte vermeiden.