7-zip -xr! *. Bat erstellt ein leeres Archiv mit dem Namen der Stapeldateien

1969
bjrmeno

Ich versuche, Dateien aus einem 7-Zip-Stapel auszuschließen.

Die Syntax lautet:

for %%A in (*) do "C:\Program Files\7-Zip\7z.exe" a -tzip -xr!*.docx "%%A.zip" "%%A" -xr!*.bat

Der Befehl erstellt ZIP-Dateien aller Dateien im Ordner einschließlich der *.batDateien, die *.bat.zipDateien sind jedoch leer.

Gibt es eine Möglichkeit, die Generierung leerer Dateien zu verhindern?

1

1 Antwort auf die Frage

0
cxw

Zunächst gehe ich davon aus, dass *.*in den Klammern eine Zahl steht und dass Sie eine ZIP-Datei pro Eingabedatei generieren. Wenn dies nicht der Fall ist, müssen Sie möglicherweise das Folgende ändern. Ich habe leere .bat.zipDateien erhalten mit:

for %%A in (*.*) do "C:\Program Files\7-Zip\7z.exe" a -tzip -xr!.docx "%%A.zip" "%%A" -xr!*.bat 

7-zip erstellt das Archiv vor dem Hinzufügen von Dateien, sodass Sie auch dann ein leeres Archiv erhalten, wenn nichts hineingeht. Um dies zu beheben, überprüfen Sie die Datei, bevor Sie sie einem Archiv hinzufügen:

@echo off for %%A in (*.*) do call :doit "%%A" goto end  :doit if "%~x1"==".bat" goto :eof if "%~x1"==".docx" goto :eof if "%~x1"==".zip" goto :eof "C:\Program Files\7-Zip\7z.exe" a -tzip %1.zip %1  goto :eof  :end 

(getestet unter Windows 7).

Die forSchleife ruft jetzt die Subroutine "doit" auf, die beim :doitLabel beginnt und bei jedem goto :eofBefehl endet. Der goto endafter the forloop springt einfach über die Subroutine für einen sauberen Abgang.

Die ifAnweisungen schließen die Dateien aus, die nicht archiviert werden sollen. %1ist der zu testende Dateiname und %~x1dessen Erweiterung. Wenn die Erweiterung unerwünscht ist, goto :eofkehrt sie zur forSchleife zurück und 7-zip wird nie aufgerufen.

Der 7-zip-Befehl hat keine -xFlags mehr, da Sie wissen, dass der Dateiname gut ist, wenn Sie auf die 7z-Befehlszeile klicken. Es gibt keine Anführungszeichen um das, %1da es bereits in der callAnweisung zitiert wurde .

Hoffe das hilft!

Wenn Sie den `if`-Test für die Dateierweiterung im U-Boot durchführen, füge ich das` / i`-Flag hinzu, um die Groß- / Kleinschreibung zu ignorieren. Andernfalls werden Dateien mit Erweiterungen mit Groß- oder Kleinbuchstaben zur ZIP-Datei hinzugefügt. JSanchez vor 10 Jahren 0
Danke für die Information. Ich werde es versuchen. Ich habe keine Ahnung, wo ich das setzen soll. Das ist alles neu für mich und ich habe versucht, das Programm zu verstehen, damit ich weiß, was es tut. Gibt es jemanden, der in der Lage ist zu interpretieren, was passiert? Ich habe einen Stapel, der die Dateien in einem Ordner komprimiert und dann die Unterordner in einzelne Dateien komprimiert, so dass ich ein einfach zu verwaltendes Archiv mit PW-Schutz und Verschlüsselung bekomme. Die einzigen Probleme, die ich hatte, sind die Ausschlüsse und das Herausfinden, wie die Dateien in einem Ordner "d: \ testfolder" erstellt werden. bjrmeno vor 10 Jahren 0
Dies ist die Syntax meines Stapels ... für %% i IN (*. *) DO d: \ portable \ 7z \ 7za.exe -t7z a -mx9 -pPASSWORD "%% ~ i.7z" "%% i "Pause für / d %% X in (*) do" d: \ portable \ 7z \ 7za.exe "-t7z a -mx9 -pPASSWORD" %% X.7z "" %% X \ pause Ich setze die Pausen ein Ich konnte also die Meldungen und Fehler sehen, nachdem es lief. Ich arbeite noch an Markup. Ich verstehe nicht, was passiert. Wenn jemand das Skript für mich zusammenbrechen könnte, würde ich es schätzen. BTW, ich weiß, was -mx9 und -t7z sind -p machen, aber es geht darum. Ich bin hierher gekommen, weil die meisten Befehlszeilen-Informationen, die ich gefunden habe, hier waren. Jeder HLP wäre dankbar. MP bjrmeno vor 10 Jahren 0