RE:Copiar/mover carpetas
Publicado por
z666zz666z (1 intervención) el 27/05/2009 12:14:18
Copiar el contenido es fácil (Ojo a las carpetas con espacios en su nombre que dan problemas):
FOR /F %a IN ('DIR /B/O D:\%1*') DO XCOPY /E %a* "D:CarpetaDestino"
Con esto se copia todos los archivos y subcarpetas que haya en cada carpeta D:\%1* sobre D:CarpetaDestino
Lo difícil es si D:\%1* contiene espacios, pues el FOR trata el espacio como un separador y al %a sólo le pasa la primera parte (creo que se soluciona con la opcion delims del for, mira su ayuda: for /? aunque nunca lo he probado)
Y si lo que realmente pretendes es mover carpetas, simplemente MS-DOS no te deja, no hay comando para hacerlo; el move sólo mueve archivos, ignora subcarpetas, ...
Espero te sea de ayuda.
Nota: Si la sentencia la incluyes dentro de un .BAT o .CMD (proceso por lotes) recuerda y no te olvides de poner un doble % en la/s variable/s del FOR, como en la siguiente sentencia, nota que en ambos sitios se ponen dos % seguidos:
FOR /F %%a IN ('DIR /B/O D:\%1*') DO XCOPY /E %%a* "D:CarpetaDestino"
La ayuda de FOR /? no es que sea muy clara, pero puede ayudar bastante.
Por cierto dentro de un .BAT se pueden poner paréntesis para agrupar sentencias que estén en varias líneas para que en cada iteración del for ejecute cada una, detras de la otra; por ejemplo:
FOR %a IN ("Nom1 Nom2 Otro" DO (ECHO %a
ECHO Otra vez %a
Y OTRA MÁS %a
)
Así mismo también se pueden ejectuar varias sentencias seguidas en la misma línea si están separadas por &; por ejemplo:
ECHO Esto sale en una línea & ECHO Y esto en la siguiente
Espero te sea de ayuda.
P.D.: Si encuentras la manera de hacer un MOVE Folder y que funcione, coméntamelo.
(No me vale como solución hacer un XCOPY /E ... y luego un RD /S ... por motivos de espacio y tiempo)