txt only files examples directories windows file-io cmd directory subdirectories

windows - only - ¿Cómo mover todos los archivos con una extensión específica de todos los subdirectorios a sus padres usando CMD?



list directories cmd (9)

La carpeta c:/folder1 contiene subfolder1 , subfolder2 , etc.

Estos subdirectorios contienen archivos .pdf y .db .

¿Cómo se pueden mover todos los archivos .pdf a c:/folder1 usando el intérprete de comandos de Windows?


Dos años demasiado tarde para el OP, pero como esto era algo que estaba tratando de resolver, pensé en publicar la solución por el bien de la posteridad. El bucle for externo enumera los subdirectorios en el directorio de trabajo, el bucle for externo enumera los subdirectorios para moverse a la ruta de destino.

for /d %f in (*.*) do for /d %e in (%f/*.*) do move "%e" DestinationPath

Esto funciona mejor si DestinationPath no es una subcarpeta del directorio de trabajo, ya que intentará mover DestinationPath a sí mismo.

Para confirmar el comando antes de ejecutarlo al por mayor, comience a repetir los comandos de movimiento final de la siguiente manera:

for /d %f in (*.*) do for /d %e in (%f/*.*) do echo move "%e" DestinationPath

y copie / pegue uno de los resultados para ejecutarlo y confirme que funcionó de la manera que esperaba. Luego quita el eco y ponte en movimiento.


Esto funcionó para mí:

for /r "c:/source_directory/" %%x in (*.pdf) do move "%%x" "c:/target_directory/"

Este comando copiará recursivamente todos los archivos pdf desde el origen al directorio de destino utilizando cmd en Windows 7: probado y funciona.

Espero eso ayude.


Hay otra forma de hacer esto en el Explorador de Windows (GUI, no símbolo del sistema):

  • Navega al directorio de nivel superior
  • En el cuadro de búsqueda en la parte superior derecha, escribe * .pdf y pulsa buscar
  • Seleccione todos los archivos y arrástrelos a la carpeta de nivel superior
  • Responda a cualquier pregunta sobre la sobrescritura de archivos

No creo que haya un comodín que funcione en las subcarpetas, por lo que desea usar un bucle para recorrer cada subcarpeta y mover * .pdf;

FOR /R [your root folder path] %%G IN (*.pdf) DO move %%G [new path]

El comando después de DO está inherentemente en sus propias comillas. Si anticipa espacios en su origen o destino, use comillas dobles para encapsularlos, por ejemplo:

FOR /R "source folder with spaces" %%G IN (*.pdf) DO move "%%G" "dest path with spaces"

NOTA las comillas alrededor de %% G, son necesarias para que el comando de movimiento resuelva la ruta.

** EDITAR: en respuesta a la respuesta aceptada, las instrucciones del comando From en Windows XP y Windows 7, respectivamente:

Esto muestra que un comodín no funciona en rutas, solo para archivos en un solo directorio (por ejemplo, C: / folder * .files). El símbolo del sistema no funciona de manera recursiva cuando encuentra un comodín.


Robocopy hizo maravillas por mí:

robocopy c:/cache c:/cache-2012 ?????-2012*.hash /S /MOV

Lo usé para mover todos los archivos con cierta máscara fuera de c:/cache y sus numerosos subdirectorios.


Sé que esto es superlativo, pero por si acaso ayuda a alguien.

Usado para buscar en todas las subcarpetas un archivo .MKV y moverlos al directorio actual en el que reside el archivo por lotes.

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.mkv) DO ( move "%%X" "%CD%" ) popd )


Solo tomo una puñalada salvaje en la oscuridad aquí, pero si recuerdo correctamente, DOS puede manejar globos y el equivalente de mv es MOVE , así que:

MOVE C:/FOLDER1/*/*.PDF C:/FOLDER1/


@echo on for /r "F:/All_drawings/newdrg/" %%x in (*.tiff) do move "%%x" "F:/Alldrawings" pause

{mueve todos los archivos de la carpeta newdrg y sus "subcarpetas" a la carpeta de destino Alldrawings , este comando es para la operación de archivo por lotes para la línea de comandos, use solo "%" en ambos lugares}.


MOVE "C:/FOLDER 1/PDF FILES/*.pdf" "C:/FOLDER 1" MOVE "C:/FOLDER 1/DB FILES/*.db" "C:/FOLDER 1"

Después del comando de movimiento, tiene la carpeta de origen seguida del destino al que se moverán los archivos. El * delante de cada extensión de archivo es una función de comodín que seleccionará todo el tipo de archivo especificado existente dentro de ese directorio.

Además, si puede crear un archivo .bat con estos comandos, si lo desea. Para hacer esto, pegue sus comandos en el bloc de notas y guárdelo como .bat en lugar de .txt

Luego, puede hacer doble clic en el archivo y ejecutará los comandos dentro del archivo cada vez que lo haga. Esto es útil si tiene tareas repetitivas que lo requieren.