Saltar al contenido

Extraiga todos los Zip de un directorio (incluidas las subcarpetas) con un archivo .bat o un comando dos

Entiende el código de forma correcta antes de aplicarlo a tu proyecto si tdeseas aportar algo puedes decirlo en los comentarios.

Solución:

La secuencia de comandos:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (
    "C:Program Files7-Zip7z.exe" x -o"%%~dpI" "%%I"
)

Explicación:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (

Esto realiza un ciclo para cada archivo devuelto por el comando dir /b /s *.zip *.rar. los /s dice dir recursivamente en subdirectorios y /b imprime en formato simple.

El nombre del archivo se almacena en el %%I variables para su uso posterior. Si estuviera escribiendo esto en el indicador, usaría %I en cambio.

"C:Program Files7-Zip7z.exe" x -o"%%~dpI" "%%I"

Esto realiza la extracción. El argumento -o"%%~dpI" extrae el archivo en el mismo directorio donde reside el archivo. Otras opciones:

  • -o"%%~dpI" — Extrae en el directorio donde reside el archivo.

  • -o"%%~dpnI" — Crea un nuevo directorio en la jerarquía con el nombre del archivo y lo extrae (es decir, AFolderarchive.zip extractos en AFolderarchive).

  • -o"%%~nI" — Crea un nuevo directorio en el directorio actual con el nombre del archivo y lo extrae (es decir, AFolderarchive.zip extractos en .archive).

  • Omitir el -o argument — Extrae en el directorio actual.

Ejemplo:

C:Temp>tree /F

    Folder PATH listing
    Volume serial number is 08A4-22E0
    C:.
    │   batch.bat
    │
    ├───AFolder
    │       a.zip
    │
    ├───BFolder
    │       b.zip
    │
    └───CFolder
            c.zip



C:Temp>batch.bat > nul


C:Temp>tree /F

    Folder PATH listing
    Volume serial number is 08A4-22E0
    C:.
    │   batch.bat
    │
    ├───AFolder
    │       a.zip
    │       a.zip.txt
    │
    ├───BFolder
    │       b.zip
    │       b.zip.txt
    │
    └───CFolder
            c.zip
            c.zip.txt

Esta es una actualización de la respuesta aceptada para admitir nombres de archivo con espacios (“DELIMS=”) y omitir la sobrescritura (-aos). Vea los enlaces a continuación y el código actualizado. Gracias

Extraiga todos los Zip en un directorio (incluidas las subcarpetas) con un archivo .bat o un comando dos https://stackoverflow.com/questions/12487491/how-to-handle-space-of-filename-in-batch-for-loop http://7zip.bugaco.com/7zip/MANUAL/switches/overwrite.htm

for /F "DELIMS=" %%I IN ('dir /b /s *.zip *.rar') DO (
    "H:Program Files7-Zip7z.exe" x -aos -o"%%~dpI" "%%I"
)

Comentarios y valoraciones del tutorial

Si conservas algún recelo y forma de perfeccionar nuestro artículo te inspiramos escribir una explicación y con mucho gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *