Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
1.242 lecturas y 4 respuestas
  • Comprimir carpetas recursivamente en ficheros separados con el ZIP dentro de cada carpeta

    Hola.

    Una carpeta con muchas subcarpetas conteniendo imagenes png.

    Lo que quiero es comprimir los PNG de cada carpeta y que cada ZIP resultante tenga el nombre de cada subcarpeta y quede dentro de cada subcarpeta.

    Con winrar es muy fácil de hacer salvo que los ZIP resultantes no quedan dentro de cada subcarpeta sino en la misma carpeta de éstas. Así que en su defecto valdría automatizar el mover un montón archivos a carpetas con el nombre de cada archivo.

    ¿Existe alguna forma de comprimir esto automáticamente con algun batch del tipo?:

    @echo off
    for /D %%x in (*) do (
    if exist %%x\*.png (7zip a %%x\%%x.zip %%x\*.png ))

    Pero que funcione, claro :D

    Saludos.

    EDITO:

    set path="C:\Program Files\7-Zip\";%path%

    @echo off
    for /D %%x in (*) do (
    if exist %%x\*.png (7z.exe a %%x\%%x.zip %%x\*.png ))

    Funciona casi, lo único que falla es que los ZIP resultantes tienen dentro la carpeta y luego los PNG, me interesa que estén los PNG sin carpeta.

    EDIT2:

    set path="C:\Program Files\7-Zip\";%path%

    @echo off
    for /D %%x in (*) do (
    if exist %%x\*.png (7z.exe a %%x\%%x.zip .\%%x\*.png ))

    Ahora sí :)

    Este tema lleva más de 6 meses inactivo. Es recomendable que abras un nuevo tema para retomar la conversación.
    • Boca de Pez Boca de Pez
      6

      Otra opción que debe haber es cambiar al directorio que…

      Otra opción que debe haber es cambiar al directorio que contiene las imágenes (es más largo que tu propuesta funcional, pero lo de añadir el directorio actual, el punto, a la ruta de la imagen creo que podría no funcionar según el programa). No estoy en Windows y no me conozco bien la sintaxis de DOS, pero creo que algo así debería funcionar:

      set path="C:\Program Files\7-Zip\";%path%
      
      @echo off
      
      for /D %%x in (*) do (
      
      cd %%x
      
      if exist *.png (7z.exe a %%x.zip *.png )
      
      cd .. )
      • se me pasó por la cabeza hacer eso, pero no estaba seguro de…

        se me pasó por la cabeza hacer eso, pero no estaba seguro de que funcionaran varias lineas de código entre los ( )

        Mis conocimientos son bastante limitadillos jeje