Ayuda. Necesito Mover Automaticamente Archivos y Carpetas

Iniciado por JRpropaganda, 28 Septiembre 2015, 17:10 PM

0 Miembros y 1 Visitante están viendo este tema.

JRpropaganda

Saludos programadores>
Tengo una necesidad algo especifica, veran:

Necesito MOVER automáticamente el contenido (archivos Y CARPETAS) de una ubicación a otra en la misma UNIDAD.

Como todos sabéis, cuando lo hacemos manualmente se hace INSTANTÁNEAMENTE, es decir solo se cambian sus apuntadores, pero cuando lo intento hacer con ROBOCOPY dicho comando Copia de un lugar a otro y luego borra el origen... no conviene! Es altamente impractico si lo que quiero mover mide gigas y gigas de tamano! >:(  y si lo intento con MOVE aunque si lo hace instantáneamente, solo mueve lo que hay (archivos) en tal carpeta pero no las subcarpetas!!!

Solicito si alguien conoce del tema POR FAVOR me ayude, he pasado demasiadas horas intentando sin exito. Quizas no conozco bien el potencial de dichos comandos, o hay mas comandos por ahi o un batch no me caeria mal.

Mientras les mando un buen café y una dona para que lo mediten a gusto.

JR Andrade

Eleкtro

#1
Por algo se llama así, RoboCopy. :P Cuando utilizas el switch /Move, los archivos se eliminan despues de haber sido copiados.

Con el comando Move puedes mover tanto archivos como un árbol de directorio entero, pero es muy limitado (como todo en Batch), si la carpeta a mover tiene el atributo de System, el comando Move no será capaz de reconocer el directorio (e imagino que con el atributo Hidden pasará lo mismo), y no se si tendrá alguna otra limitación respecto a los atributos de los subdirectorios y demás.

Esto tal vez te lo pueda solucionar:
Código (dos) [Seleccionar]
@Echo OFF

Set "sourceDir=Directorio de origen"
Set "targetDir=Directorio de destino"

(Attrib -R -S -H /S /D "%sourceDir%")2>NUL
(Attrib -R -S -H       "%targetDir%")2>NUL

Move "%sourceDir%" "%targetDir%"

Pause&Exit /B 0

(solo lo escribí, no lo probé.)

Pero no uses el limitado Batch, puedes recurrir a VisualBasicScript (como mínimo):
Código (vb) [Seleccionar]
dim filesys, sourceDir, targetDir
set filesys = CreateObject("Scripting.FileSystemObject")

sourceDir = "Directorio de origen"
targetDir = "Directorio de destino"

If Not filesys.FolderExists(sourceDir) Then
  Call MsgBox("El Directorio de origen no existe.")

ElseIf filesys.FolderExists(targetDir) Then
  Call MsgBox("El Directorio de destino ya existe.")

Else
  Call filesys.MoveFolder(sourceDir, targetDir)

End If


Ten en cuenta que el método FileSystemObject.MoveFolder() no puede mover un directorio si el directorio de destino ya existe, cómo explica la documentación oficial:
MoveFolder Method - MSDN

Saludos