
Tengo un archivo zip results.zip
. Contiene dos carpetas que contienen un montón de archivos zip: PASS/test1.zip
, FAIL/test2.zip
, FAIL/test3.zip
.
En Linux es trivial descomprimirlos en un par de pasos:
$ unzip results.zip
$ echo FAIL/*.zip PASS/*.zip | xargs -n1 unzip
Algunos usuarios de Windows se quejan de que resulta engorroso descomprimir todos los archivos en Windows. (Hay docenas de archivos zip dentro del zip principal). ¿Existe algún mecanismo que les permita expandir el contenido de todos los archivos a la vez?
Algunas cajas de clientes son más nuevas, pero hay muchas que todavía usan WinXP.
Respuesta1
Darlesdescomprimir.exey un script por lotes como
unzip results.zip
for %%i in (FAIL\*.zip PASS\*.zip) do unzip %%i
Respuesta2
IntentarExtraer ahora. No he probado esta característica yo mismo, pero sípretender apoyarlo.
Respuesta3
Aquí hay una solución para Windows, suponiendo que 7zip esté instalado en la ubicación predeterminada.
@echo off
Setlocal EnableDelayedExpansion
Set source=%1
Set SELF=%~dpnx0
For %%Z in (!source!) do (
set FILENAME=%%~nxZ
)
set FILENAME=%FILENAME:"=%
"%PROGRAMFILES%\7-zip\7z.exe" x -o* -y "%FILENAME%"
rem DEL "%FILENAME%"
For %%Z in (!source!) do (
set FILENAME=%%~nZ
)
for %%a in (zip rar jar z bz2 gz gzip tgz tar lha iso wim cab rpm deb) do (
forfiles /P ^"%FILENAME%^" /S /M *.%%a /C "cmd /c if @isdir==FALSE \"%SELF%\" @path"
)
Esto ha sido adaptado desde aquí.https://social.technet.microsoft.com/Forums/ie/en-US/ccd7172b-85e3-4b4a-ad93-5902e0abd903/batch-file-extracting-all-files-from-nested-archives?forum=ITCG
Notas:
- La única forma de realizar modificaciones variables utilizando los modificadores ~ es utilizar un bucle for..in ficticio. Si hay una manera mejor, edítela.
- ~nx modifica la variable para convertirla en una ruta completa + nombre de archivo.
- ~dpnx también hace lo mismo con %0, es decir, obtiene la ruta completa y el nombre de archivo del script.
- -o* en la línea de comando de 7zip le permite a 7zip crear nombres de carpetas sin la extensión .zip como lo hace cuando se extrae con un clic derecho en la interfaz gráfica de usuario.
- ~n modifica la variable para convertirla en un nombre de archivo sin extensión. es decir, suelta el .zip
- Tenga en cuenta que el carácter de escape (para comillas)
FORFILES /P
es^
(caret) mientras que paraCMD /C
it es\
. Esto garantiza que maneje rutas y nombres de archivos con espacios también de forma recursiva sin ningún problema. - Puede eliminar el REM de la declaración DEL si desea que el archivo zip se elimine después de descomprimirlo.
Respuesta4
Mira esto
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
"Manejo de archivos anidados (extraer recursivamente archivos que estaban empaquetados en otros archivos)".
Sistema operativo: Windows 2K/XP/2003/Vista