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.zip
Dateien 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 for
Schleife ruft jetzt die Subroutine "doit" auf, die beim :doit
Label beginnt und bei jedem goto :eof
Befehl endet. Der goto end
after the for
loop springt einfach über die Subroutine für einen sauberen Abgang.
Die if
Anweisungen schließen die Dateien aus, die nicht archiviert werden sollen. %1
ist der zu testende Dateiname und %~x1
dessen Erweiterung. Wenn die Erweiterung unerwünscht ist, goto :eof
kehrt sie zur for
Schleife zurück und 7-zip wird nie aufgerufen.
Der 7-zip-Befehl hat keine -x
Flags mehr, da Sie wissen, dass der Dateiname gut ist, wenn Sie auf die 7z-Befehlszeile klicken. Es gibt keine Anführungszeichen um das, %1
da es bereits in der call
Anweisung zitiert wurde .
Hoffe das hilft!