
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 cmd
y presione ENTER. Luego vaya al directorio que contiene los subdirectorios con sus archivos zip escribiendo cd c:\my\example\dir
y 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:d
devuelve una fila por directorio. Para cada una de estas filas, do
se ejecuta el comando subyacente. @echo %f
simplemente 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 *.zip
o *.rar
en 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).