Stapelarchiv mehrere Ordner mit 7-zip in ein anderes Verzeichnis

577
FOSSFreak

In Bezug auf diese wunderbare Arbeit :

@echo off if [%1]==[] goto :eof :loop 7z a -tzip "%~1.zip" "%~1" shift if not [%1]==[] goto loop 

Ich kann nicht herausfinden, wo ich das Ausgabeverzeichnis ablegen soll. Ich möchte ein Batch-Archiv von meinen externen Festplatten erstellen, von denen die meisten vollständig gefüllt sind. Also muss ich das Ausgabeverzeichnis auf ein anderes Laufwerk ändern.

Ich habe mit der folgenden Befehlszeile einen Weg gefunden, dies zu tun:

for /d %X in (*) do "c:\Program Files\7-Zip\7z.exe" a -tzip "<destinationPath>\%X.zip" "%X\" 

Die obige Stapelverarbeitungsdatei wäre jedoch sehr nützlich, da ich einfach so viele Ordner darauf ablegen könnte, wie ich über freien Speicherplatz verfügte. Dann die Archive verschieben und mit dem nächsten Stapelvorgang fortfahren.

Unter Windows hier übrigens also bitte mit mir.

0

1 Antwort auf die Frage

1
Worthwelle

Der 7zBefehl in der von Ihnen angegebenen Stapeldatei verwendet den vollständigen Pfad der Eingabedatei, um die Ausgabedatei abzurufen.

Um dies zu ändern, können Sie ändern, "%~1.zip"um "<destinationPath>\%~nx1.zip"wie unten dargestellt oder "<destinationPath>\%~n1.zip"wenn Sie die Erweiterung der ursprünglichen Datei in dem neuen Dateinamen werden nicht brauchen.

@echo off if [%1]==[] goto :eof :loop 7z a -tzip "<destinationPath>\%~nx1.zip" "%~1" shift if not [%1]==[] goto loop 

Zur Klarstellung:

  • %~1 steht für den vollständig qualifizierten Pfadnamen der ersten Eingabe (z. B. C: \ mein \ Pfad \ text.txt)
  • %~n1 steht nur für den Dateinamen der ersten Eingabe (zB: Text)
  • %~x1 stellt nur die Erweiterung der ersten Eingabe dar (Beispiel: .txt)
  • Diese beiden werden kombiniert %~nx1, um den Dateinamen und die Erweiterung der ersten Eingabe darzustellen (Beispiel: test.txt).
Sensationell! Wo lernst du das Zeug? Ich habe überall gesucht. Gibt es eine definitive Batch- / Cmd-Anleitung oder etwas? FOSSFreak vor 6 Jahren 0
Ich habe [Rob Van Der Woude] (http://www.robvanderwoude.com/batchstart.php) und [SS64] (https://ss64.com/nt/) als gute Referenzen gefunden. Einige dieser Befehle befinden sich auch an unintuitiven Orten. Die Informationen in dieser Antwort stammen vom Befehl [`FOR /?] (http://s64.com/nt/for.html). Worthwelle vor 6 Jahren 1
Vielen Dank, ich habe diese Ressourcen für zukünftige Referenzen festgelegt. FOSSFreak vor 6 Jahren 0