Preciso atualizar o arquivo “background.png” em centenas de arquivos .zip no mesmo diretório. Tentei o seguinte comando sem sucesso:
7z u -r "C:\Users\xxx\Desktop\testzip\*.zip" "C:\Users\xxx\Desktop\testzip\background.png"
Recebo o erro "não é possível abrir o arquivo". É possível fazê-lo?
Responder1
Adicione um arquivo específico a cada arquivo zip recursivamente com 7-Zip
Use umPara /Flaço e o Dircomando usando as /S /B /A-D
opções para iterar cada arquivo zip, um por um, recursivamente do diretório inicial para baixo e atualizar cada arquivo compactado dessa maneira.
Observação: Com este método você omitirá e não usará o7-Zip -r
switch com o parâmetro de atualização.
Linha de comando
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"
Script em lote
Observação: Você pode definir o valor da SET Src=
variável como o caminho completo da pasta inicial na qual deseja atualizar os arquivos zip recursivamente. Você pode definir o SET uFile=
valor da variável como o caminho completo do arquivo com o qual você está atualizando os arquivos zip; o arquivo de atualização.
@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%"
)
Recursos adicionais
- Para /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.
Além disso, a substituição de referências de variáveis FOR foi aprimorada. Agora você pode usar a seguinte sintaxe opcional:
%~fI - expands %I to a fully qualified path name
- -u (Opções de atualização) switch