2010-12-05 87 views
11

carpeta contiene c:\folder1subfolder1, subfolder2, etc ..¿Cómo mover todos los archivos con extensión específica de todos los subdirectorios a sus padres utilizando CMD?

Estos subdirectorios mantenga .pdf y .db archivos.

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

+1

¿Está buscando para hacer esto con cualquier lenguaje de programación en particular? –

+0

Lo siento, debería haber mencionado esto. En MS-DOS usando CMD. – mihai

Respuesta

1

limitarse a tomar una puñalada salvaje en la oscuridad aquí, pero si no recuerdo mal DOS puede manejar pegotes y el equivalente de mv es MOVE, por lo que:

MOVE C:\FOLDER1\*\*.PDF C:\FOLDER1\

+0

Intenté 'copiar B: \ * \ *. * C: \ temp \ cdrw \' y obtuve este error: 'El nombre de archivo, el nombre del directorio o la sintaxis de la etiqueta del volumen es incorrecto. – Ryan

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

Después de que el 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 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 ello, pegue sus comandos en el bloc de notas y guardarlo como .bat en lugar de .txt

A continuación, puede hacer doble clic en el archivo y va a ejecutar los comandos en el archivo cada vez que lo haga. Esto es útil si tiene alguna tarea repetitiva que lo requiera.

4

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

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

El comando después de hacer es inherentemente en sus propias cotizaciones. Si prevé espacios en su origen o de destino, utilice comillas dobles para encapsular ellos, por ejemplo .:

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

NOTA las comillas alrededor de %% G, éstos son necesarios para el comando de movimiento para resolver la ruta.

** EDIT: En respuesta a la respuesta aceptada, Desde indicadores de comandos en Windows XP y Windows 7, respectivamente:

command prompts

Esto demuestra que un comodín no funciona en caminos, sólo para archivos en un solo directorio (por ejemplo, C: \ folder * .files). El símbolo del sistema no funciona recursivamente cuando encuentra un comodín.

+0

Esto pasará por TODAS LAS SUBCADENADORAS, por el camino, no solo la primera rama. – Eaglebird

+0

De las instrucciones en WinXP y Win7: (colocar incorrectamente, ignorar esto) – Eaglebird

+0

tiene razón, el póster quiere una solución recursiva que leí mal. –

5

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 interno enumera los subdirectorios para pasar 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 tratará de mover DestinationPath en sí mismo.

para confirmar el comando antes de ejecutarlo por mayor, comenzar simplemente haciendo eco de los comandos de movimiento final, así:

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

y copiar/pegar uno de los resultados de ejecutarlo y confirmar que funcionó en la forma esperada . Luego elimina el eco y muévete.

+0

Esto no funciona si los subdirectorios tienen espacios en sus nombres –

18

Esto funcionó para mí

Este comando copiará de forma recursiva archivos AL pdf del origen al destino directorio utilizando cmd en Windows 7 - probado y funciona

a/r "c: \ source_directory \" % % x en (* .pdf) no moverse "%% x" "c: \ directorio_destino \"

creo que sirve

+4

% x es suficiente, %% x es para un archivo por lotes – Floni

+0

Creo que 'for/r" b: \ "% x in (* .mp3) do copiar"% x "" c: \ temp \ cdrw "' funciona pero no sé si maneja las subcarpetas. – Ryan

0

Robocopy hizo maravillas para 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.

3

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

utilizado esto para buscar todas las subcarpetas de un archivo MKV y moverlas al directorio actual del archivo por lotes reside.

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

for /r "F:\All_drawings\newdrg\" %%x in (*.tiff) do move "%%x" "F:\Alldrawings" 

pause 

{mueve todos los archivos de la carpeta y su newdrg "subcarpetas" a la carpeta de destino Alldrawings, este comando es para el funcionamiento por lotes de archivos para el uso de línea de comandos solo "%" en ambos lugares}.

0

Hay otra manera de hacer esto en el Explorador de Windows (GUI, no aviso de comando):

  • Vaya al directorio de nivel superior
  • En el cuadro de búsqueda en la parte superior derecha, escriba * .pdf y seleccionar buscar
  • Seleccionar todos los archivos y arrastrarlos a la carpeta de nivel superior
  • Responder a cualquier pregunta acerca de sobrescribir los archivos
Cuestiones relacionadas