2

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

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

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

1 ответ1

0

Добавьте один конкретный файл в каждый zip-файл рекурсивно с 7-Zip

Используйте цикл For /F и команду Dir с помощью переключателей /S /B /A-D чтобы рекурсивно перебирать каждый zip-файл по одному из начального каталога и обновлять каждый архивный файл таким образом.

Примечание. С помощью этого метода вы пропустите и не будете использовать ключ 7-Zip -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= variable как полный путь к файлу, которым вы обновляете 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%"
)

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

  • Для /F
  • 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
    
  • Dir

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .