Wie übergebe ich mit 7Zip mehrere Dateien in einem einzigen Befehl an Zip?

Wie übergebe ich mit 7Zip mehrere Dateien in einem einzigen Befehl an Zip?

Ich habe einen Ordner, der die unten genannten Dateien enthält:

destiny.txt
destiny1.txt
destiny2.txt
destiny3.txt
destiny4.txt
destiny5.txt
destiny6.txt
destiny7.txt

Davon stammen destiny1.txt, destiny4.txt und destiny6.txt aus Batch1.

Ich verwende es 7zipzum Zippen der Dateien.

Kann ich diese 3 Dateien in einem einzigen Schritt erstellen DestinyTest.zip?

Ist es möglich?

Antwort1

Kann ich diese 3 Dateien in einem einzigen Schritt erstellen DestinyTest.zip?

Sie können die Befehlszeilenversion von 7zip verwenden, die 7z.

Von einer Befehlszeile:

7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
  • a- Fügt Dateien zum Archiv hinzu.
  • -tzip– Gibt den Archivtyp an (wir erstellen ein zipArchiv).

Weiterführende Literatur

Antwort2

Wenn Sie eine Datei haben, die die Dateien auflistet, die in die Zip-Datei geladen werden sollen, z. B.

Erstellen Sie eine Liste der zu archivierenden Dateien, eine pro Zeile. Dies ist eine @-Liste aus der DOS-Zeit, eine Reihe von Programmen tun dies für jede Zeile.

Sie können eine solche Datei mit erstellen dir /b destin*.* > zipme.lstund dann Zeilen in einem ASCII-Editor (Notepad oder Bearbeiten) entfernen.

type zipme.lst destiny1.txt destiny4.txt destiny6.txt 7za a -tzip DestinyTest.zip @zipme.lst

Dadurch wird zipme.lst gefunden und alle darin aufgelisteten Dateien hinzugefügt. Es kann länger als die Befehlszeile sein und Sie haben eine gewisse Kontrolle darüber.

Antwort3

Ich hatte ein ähnliches Problem und wollte es mit einemBatch-Skript. Hier ist, wie:

Im folgenden Beispiel sucht das Skript nach allen CSV-Dateien, die mit „cell_cfg“ und „slave_cfg“ beginnen, sammelt sie und komprimiert sie in einer Datei namens „cfg.7z“, die in einem Unterverzeichnis namens „zip“ gespeichert ist:

@ECHO OFF
setlocal enableDelayedExpansion
mkdir zip
ECHO collecting filenames...
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
FOR %%i IN (cell_cfg*.csv) DO (
    ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
        SET filenames=!filenames!" "%%i
    )
)
FOR %%i IN (slave_cfg*.csv) DO (
    ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
        SET filenames=!filenames!" "%%i
    )
)
set filenames=%filenames%"
%filenames%

(Passen Sie den Pfad Ihrer 7z.exe und die Datei-/Ordnernamen an. Wenn Sie .zip statt .7z möchten, benennen Sie die Zeilen um:

set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z

hinein

set filenames="C:\Program Files\7-Zip\7z.exe" a -tzip "zip/cfg.zip

)

Ich habe es als 'zip_cfg.bat' gespeichert und in den Ordner mit den Dateien gelegt, die ich zippen möchte. Dann kann ich es in der Kommandozeile aufrufen: Zuerst zum Ordner mit den Dateien navigieren, dann einfach aufrufen:

zip_cfg.bat

Falls Sie alle Dateien im Ordner ("*") komprimieren möchten, verhindert der Teil „FIND /I "zip_cfg.bat" 1>NUL“, dass das Skript die Batchdatei selbst komprimiert.

Hoffe, das hilft jemandem ... :)

verwandte Informationen