Como atualizar vários arquivos compactados com a linha de comando 7zip?

Como atualizar vários arquivos compactados com a linha de comando 7zip?

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-Dopçõ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 -rswitch 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
    
  • Dir

  • -u (Opções de atualização) switch

informação relacionada