2011-01-15 19 views
7

Tengo una carpeta con muchas subcarpetas con uno o más archivos en cada una. Intento escribir un archivo por lotes que mueva todos esos archivos a C: \ songs (por ejemplo). ¿Alguna ayuda? Ya he probadoComando DOS para mover todos los archivos en los subdirectorios un nivel arriba

C:\>FOR /R C:\Test %i IN (*) DO MOVE %i C:\Songs 

Las carpetas existen pruebas y canciones, pero me da un error que dice

%i was unexpected at this time. 

¿Qué estoy haciendo mal?

Respuesta

5
FOR /R %i IN (C:\Test\*) DO MOVE "%i" C:\Songs 

En un archivo de proceso por lotes, tiene que ser %% i. Extraño capricho de lote.

+0

¿Ejecutó esto? Para mí solo cuelga la consola. Extraño. –

+0

Si la carpeta es masiva, tomará mucho tiempo analizar todo recursivamente. Sí, lo probé, en Win7 y ahora en XP. Genuino MS-DOS necesitaría \ *. \ * Sin embargo. – SilverbackNet

+0

Trabajos. Gracias :) – Rishi

5

(mover archivos en subdirectorios hasta 1)

for /r %x in (*.*) do move "%x" "%x"/../.. 

(última parte que suelen utilizar tubos inclinados hacia atrás, pero esta cosa loca mantuvo eliminándolos por alguna razón. Se va a trabajar de cualquier manera, aunque)

(borrar directorios que no sean necesarios)

for /d /r %x in (bin) do rd "%x" 

es decir, si usted tenía un montón de directorios de archivos en directorios "bin" bajo los y que quería para mover todo hacia arriba 1 y eliminar los directorios "bin".

+0

¿Cómo cambiaría el primer comando para usar la carpeta seleccionada en lugar de '(* . *) '? (Esto es para usar en un archivo por lotes que luego usaré con un comando de menú contextual personalizado). – u01jmg3

Cuestiones relacionadas