Usando 7zip para extraer múltiples zips en múltiples carpetas

Usando 7zip para extraer múltiples zips en múltiples carpetas

Tengo un árbol de carpetas grande. Digamos que hay carpetas denominadas A, B, C, etc. hasta Z. Dentro de cada carpeta hay varios archivos zip.

Puedo seleccionar todos los zips en una carpeta, hacer clic derecho, seleccionar 7zip y seleccionar Extraer a "*" y funciona perfectamente. Por ejemplo, si hago eso con los zips en la carpeta A, A contendrá una carpeta para cada zip con el contenido del zip dentro.

Lo que quiero hacer es buscar todos los archivos zip en TODAS las carpetas (AZ) y realizar esta operación todas a la vez, de modo que cada una de las carpetas (AZ) termine con carpetas para todos los zip que contienen.

Lo que realmente sucede es que 7zip extrae todo a la primera carpeta que encuentra (digamos, A).

¿Sabe alguien una forma de hacer ésto?

Respuesta1

Podrías usar la línea de comando de Windows. Simplemente presione el logotipo de Windows, escriba cmdy presione ENTER. Luego vaya al directorio que contiene los subdirectorios con sus archivos zip escribiendo cd c:\my\example\diry ENTER, si está en otra unidad, escriba por ejemplo i:y nuevamente ENTERpara cambiar a esa unidad. Ahora, la ruta correcta se mostrará antes del cursor. Luego escribe

for /F "usebackq" %f in (`dir /b/a:d`) do @echo %f

y ENTER. dir /b/a:ddevuelve una fila por directorio. Para cada una de estas filas, dose ejecuta el comando subyacente. @echo %fsimplemente escribirá los nombres encontrados en su pantalla, para que pueda controlar con seguridad lo que se ejecutará si elimina los archivos @echo. En tu caso, necesitarás algo como

for /F "usebackq" %f in (`dir /b/a:d`) do C:\APPS\7-Zip\7z.exe x .\%f\*.zip -o%f

que para cada subdirectorio, llamará al ejecutable de línea de comando 7zip (deberá ajustar la ruta desde C:\APPS\7-Zip\su sistema) y extraerá todos los archivos zip, incluida su ruta completa, en el subdirectorio actual. Puede encontrar más información sobre la sintaxis de 7zip enhttps://www.dotnetperls.com/7-zip-examples

En caso de que haga esto una y otra vez, puede crear un simple.murciélago/.cmd con el comando mencionado anteriormente, pero lo más probable es que necesites reemplazar % por %% para que funcione.

Respuesta2

Conseguí que funcionara tal como quería. El comando correcto es:

for /F "tokens=*" %%g in ('dir /b/a:d') do "C:\Program Files\7-Zip\7z.exe" x ".\%%g\*.zip" -o"%g\*" -aos

Respuesta3

Si está usando Windows, navegue hasta la carpeta raíz con las carpetas A, B, C y D, luego busque *.zipo *.raren la búsqueda de Windows, seleccione/resalte todos los zip y use 7-zip para hacer lo que quiera. También debería funcionar bien con Dolphin (Linux).

información relacionada