¿Cómo actualizar varios archivos comprimidos con la línea de comando 7zip?

¿Cómo actualizar varios archivos comprimidos con la línea de comando 7zip?

Necesito actualizar el archivo "background.png" en cientos de archivos .zip en el mismo directorio. Probé el siguiente comando sin éxito:

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

Recibo el error "no se puede abrir el archivo". ¿Es posible hacer lo?

Respuesta1

Agregue un archivo específico a cada archivo zip de forma recursiva con 7-Zip

Usar unaPara /Fbucle y el Directoriocomando usando los /S /B /A-Dinterruptores para iterar sobre cada archivo zip uno por uno de forma recursiva desde el directorio de inicio hacia abajo y actualizar cada archivo comprimido de esta manera.

Nota: Con este método omitirás y no utilizarás el7 cremalleras -rcambie con el parámetro de actualización.


Línea 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"

Guión por lotes

Nota: Puede establecer el valor de la SET Src=variable para que sea el de la ruta completa de inicio de la carpeta en la que desea actualizar los archivos zip de forma recursiva. Puede configurar el SET uFile=valor de la variable para que sea la ruta completa del archivo con el que está actualizando los archivos zip; el archivo de actualización.

@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 adicionales

  • 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.
    

    Además, se ha mejorado la sustitución de referencias variables FOR. Ahora puede utilizar la siguiente sintaxis opcional:

    %~fI        - expands %I to a fully qualified path name
    
  • Directorio

  • -u (Opciones de actualización) interruptor

información relacionada