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 enAFolderarchive
). -
-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.