Как обновить несколько сжатых файлов с помощью командной строки 7zip?

Как обновить несколько сжатых файлов с помощью командной строки 7zip?

Мне нужно обновить файл "background.png" в сотни .zip файлов в том же каталоге. Я попробовал следующую команду, но безуспешно:

7z u -r "C:\Users\xxx\Desktop\testzip\*.zip" "C:\Users\xxx\Desktop\testzip\background.png"

Я получаю ошибку "невозможно открыть файл". Возможно ли это сделать?

решение1

Рекурсивное добавление одного определенного файла в каждый zip-файл с помощью 7-Zip

ИспользоватьДля /Фпетля и Режиссёркоманда, использующая /S /B /A-Dключи, для рекурсивного обхода каждого zip-файла по одному, начиная с начального каталога, и обновления каждого архивного файла таким образом.

Примечание: При использовании этого метода вы пропустите и не будете использовать7-Зип -rпереключитесь с параметром обновления.


Командная строка

FOR /F "TOKENS=*" %A in ('DIR /S /B /A-D "C:\Users\xxx\Desktop\testzip\*.zip"') DO 7z u "%~fA" "C:\Users\xxx\Desktop\testzip\background.png"

Пакетный скрипт

Примечание: Вы можете установить значение переменной, SET Src=чтобы оно было полным путем к начальной папке, в которой вы хотите обновить zip-файлы рекурсивно. Вы можете установить SET uFile=значение переменной, чтобы оно было полным путем к файлу, с помощью которого вы обновляете zip-файлы; файл обновления.

@ECHO ON

SET Src=C:\Users\xxx\Desktop\testzip
SET uFile=C:\Users\xxx\Desktop\testzip\background.png

FOR /F "TOKENS=*" %%A in ('DIR /S /B /A-D "%Src%\*.zip"') DO (
    7z u "%%~fA" "%uFile%"
)

Дополнительные ресурсы

  • Для /Ф
  • FOR /?

        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    

    Кроме того, была улучшена подстановка ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~fI        - expands %I to a fully qualified path name
    
  • Режиссёр

  • -u (Обновить параметры) ключ

Связанный контент