it-swarm-es.com

¿Cómo extraigo todos los archivos en los subdirectorios de esta carpeta?

¿Cómo extraigo varios archivos contenidos en subdirectorios en una carpeta, enviando los resultados a las carpetas donde están los archivos?.

18
Dmitri Farkov

En primer lugar, instale 7-Zip .

Cree un archivo bat en la raíz del directorio que contenga muchos subdirectorios con archivos dentro. Luego pegue lo siguiente en:

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
        FOR %%X in (*.rar *.Zip) DO (
            "C:\Program Files\7-Zip\7z.exe" x "%%X"
        )
    popd
)

Inicie el bate, y todos los rar's/zips se extraerán en la carpeta en la que están contenidos.

¿Cómo funciona esto?

FOR/D/r %% F en ("*") DO (

For loop para recorrer todas las carpetas en el directorio actual y poner la ruta en una variable %%F.

pushd% CD%

Ponga el directorio actual en el que estamos en la memoria.

cd %% F

Establecer la carpeta desde la variable %%F como el directorio actual.

FOR %%X in (*.rar *.Zip) DO (

Para todos los archivos rar y Zip en la carpeta actual, haga:

"C:\Program Files\7-Zip\7z.exe" x "%%X"

Ejecute 7-Zip en los archivos. Se necesitan citas alrededor de %%X porque algunos nombres de archivo tienen espacios.

popd

Regresar al directorio anterior que previamente almacenamos en la memoria.

Espero que sea útil para alguien.

22
Dmitri Farkov

Tuve problemas para ejecutar el script desde Windows Vista. Cuando ejecuté el código, no pasó nada. Necesitaba ser administrador para poder ejecutar el script. Cuando hice clic derecho en el archivo .bat y "ejecutar como administrador" no funcionó porque por alguna razón se inició en la carpeta system32 (si no recuerdo mal). Para resolver esto, simplemente use la variable de entorno de Windows (explicada aquí: Variables de entorno de Windows )% ~ dp0 para volver al directorio desde el que se ejecutó el script.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
    FOR %%X in (*.rar *.Zip) DO (
        "C:\Program Files\7-Zip\7z.exe" x %%X
    )
popd
)

Asegúrese de que no haya archivos * .rar o * .Zip al mismo nivel que el script. Deberían estar un nivel abajo.

Espero que este comentario haya ayudado a alguien.

3
Daniel P

Sin embargo, las respuestas anteriores funcionan, si está ejecutando Windows 64-bit Y 7-Zip 32-bit, La ruta correcta es C:\Program Files (x86)\7-Zip para 7-Zip. A continuación se muestra el guión que funcionó para mí.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.Zip) DO (
        "C:\Program Files (x86)\7-Zip\7z.exe" x %%X
    )
    popd
)
1
Ryan
find . -name "*.Zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

Inicia una búsqueda recursiva en el directorio actual, encuentra todos los archivos que terminan en .Zip y luego los canaliza en un bucle. Para cada archivo que encuentra, ejecuta un comando de descompresión en el archivo con la salida desviada al directorio del archivo.

1
Curtis Tasker