Мне нужно обновить файл "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 (Обновить параметры) ключ