7Zip recursivo descomprime y renombra los subdirectorios

1

Tengo un directorio raíz con muchos subdirectorios diferentes que tienen archivos .zip (ejemplo a continuación). Necesito un lote / .cmd / etc para descomprimir los archivos zip en sus subdirectorios y cambiar el nombre del archivo extraído (a .tif) igual que el archivo zip. Investigué y encontré el siguiente código, sin embargo, esto solo funcionará cuando se coloque en los subdirectorios. No es la carpeta principal. ¿Cómo hago que este código funcione en todos los subdirectorios como se explica?

Estructura de archivo de ejemplo

C: \ This \ Is \ Random \ Parent \ Sub \ Sub \ 1234.zip {ABCD.tif}

Lo que estoy buscando C: \ This \ Is \ Random \ Parent \ Sub \ Sub \ 1234.tif

set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof

for %%A in ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" e -o"%work%" "%%~A"
for %%F in ("%work%\*") do move "%%~F" "%%~nA%%~xF"
)

rmdir "%work%"
gdink1020
fuente

Respuestas:

1

Pude hacer los siguientes cambios para lograr lo que estaba buscando

set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof

for /F %%I IN ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" x -o"%work%" "%%~I"
for %%F in ("%work%\*") do move "%%~F" "%%~nI%%~xF"
)

rmdir "%work%"

El único problema ahora es que ".zip" está incluido en el nombre del .tif extraído. Ayuda para resolver eso sería apreciado

gdink1020
fuente
Publiqué una versión anterior del código. La "A" se reemplaza con "I" en el segundo ciclo como "%% - nI %% ~ xF", esto hace que el tif se descomprima en el directorio padre con la extensión correcta de solo .tif. "%% I %% xF" los extrae en las subcarpetas correctas pero trae la extensión .zip.tif.
gdink1020
Eso los guarda correctamente solo como la extensión .tif, pero no conserva la estructura del archivo y los descomprime a todos en el directorio principal
gdink1020
Al sustituir "%% ~ FnI.tif" por "%% ~ nI %% ~ xf" en el código original, el resultado es que .tif se extrae en la subcarpeta correcta con la extensión de archivo .zip.tif.
gdink1020
Ejecuté el código exactamente como lo tienes en el último enlace . Se ejecutó y no movió el archivo extraído a la carpeta correcta. hubo y error. (adjunto) enlace
gdink1020
Ejecuté la última versión que sugirió; nuevamente está dando el The system cannot find the file specified.error. En la aclaración de los estándares, los datos se originan en un sitio web, escribí un raspado de Python que descarga los archivos .zip (más de 500,000 archivos .zip). El script de Python crea directorios basados ​​en el Public Land Survey, primero por Township y luego en la Sección donde podría haber múltiples .zip únicos. ej.) C:\\data\Township\Section\ABC.zip. Dentro del archivo .zip hay 1 archivo tif llamado 1234.tif archivo que debe extraerse en la carpeta de la sección correcta con el nombreABC.tif
gdink1020