elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda. Necesito Mover Automaticamente Archivos y Carpetas
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda. Necesito Mover Automaticamente Archivos y Carpetas  (Leído 2,654 veces)
JRpropaganda

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda. Necesito Mover Automaticamente Archivos y Carpetas
« en: 28 Septiembre 2015, 17:10 pm »

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


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.698



Ver Perfil
Re: Ayuda. Necesito Mover Automaticamente Archivos y Carpetas
« Respuesta #1 en: 28 Septiembre 2015, 17:55 pm »

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
  1. @Echo OFF
  2.  
  3. Set "sourceDir=Directorio de origen"
  4. Set "targetDir=Directorio de destino"
  5.  
  6. (Attrib -R -S -H /S /D "%sourceDir%")2>NUL
  7. (Attrib -R -S -H       "%targetDir%")2>NUL
  8.  
  9. Move "%sourceDir%" "%targetDir%"
  10.  
  11. 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
  1. dim filesys, sourceDir, targetDir
  2. set filesys = CreateObject("Scripting.FileSystemObject")
  3.  
  4. sourceDir = "Directorio de origen"
  5. targetDir = "Directorio de destino"
  6.  
  7. If Not filesys.FolderExists(sourceDir) Then
  8.   Call MsgBox("El Directorio de origen no existe.")
  9.  
  10. ElseIf filesys.FolderExists(targetDir) Then
  11.   Call MsgBox("El Directorio de destino ya existe.")
  12.  
  13. Else
  14.   Call filesys.MoveFolder(sourceDir, targetDir)
  15.  
  16. 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


« Última modificación: 28 Septiembre 2015, 18:11 pm por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines