canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  44

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 14 de 14
  1. #1
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado



    Muy buenas compañer@s,
    Estoy haciendo un programa donde tengo un montón de documentos encarpetas distintasy los quiero copiar todos en una carpeta al principio del programa y borrarlos al final.
    Hay muchisimos directorios y documentos y las rutas según el pc pueden variar.
    Alguien sabe como hacer esto para que sea rapido y sencillo???
    Muchas gracias de antemano.

  2. #2
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Lo que he probado es hacerlo con un .bat y ejecutarlo desde VB6 pero tiene dos cosas que no me gusta:
    1.- La ruta no es relativa y eso me interesa si instalo mi programa en otro pc.
    2.- Es muy lento y lo tengo que hacer siempre al iniciar el programa y al finalizar.

    Por favor, ayuda!!!

  3. #3
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado


    hola,yo te ayudo pero contame con mas detalles lo que queres hacer,que queres copiar y adonde si decis mas o menos de que se trata seguro que lo solucionas,hay funciones en visual basic para copiar archivos como filecopy y kill que los elimina.es recomendable tambien siempre a la hora de poner las rutas trabajar con el app.path ya que ter asegura que trabaja sobre la carpeta de tu proyecto y no va a haber conflicto con las rutas.

    saludos.

    Edited by: seba123neo
    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  4. #4
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Pues tengo unas 20 carpetas:
    C:\Documents and Settings\Documentos\carpeta1
    Doc1.doc
    DocN.doc

    C:\Documents and Settings\Documentos\carpetaN
    Doc1.pdf
    DocN.pdf

    Pues lo que quiero hacer es coger todos esos documentos que están en todas las carpetas y pasarlos a una carpeta:

    C:\Documents and Settings\Documentos\Todos los archivos

    Esto cuando inicias el programa y luego coges la carpeta "Todos los archivos" y cuando cierras el programa se borren.
    Creo que con el filecopy *\* se puede hacer, pero no se muy bien como hacerlo.
    Me entiendes mas o menos lo que quiero hacer??
    Gracias por contestarme seba123neo!!!!

  5. #5
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado



    bueno si lo que queres hacer es copiar todos esos archivos al iniciar tu programa a una carpeta determinada usa el FileCopy,podes hacerlo de dos formas,una es copiar archivo por archivo y otra es primero asegurarte que en cada carpeta solo esten los archivos que queres copiar y asi le ordenas que copie todos los archivos de cada carpeta y asi te ahorras lineas de codigo.

    de la primera forma seria asi:

    Código:
    FileCopy "C:\Documents and Settings\Documentos\carpeta1\Doc1.doc", "C:\Documents and Settings\Documentos\Todos los archivos\"
    y asi con todos los archivos,hasta terminar de copiar todos o sino por ejemplo en la primer carpeta veo que los archivos que queres copiar tienen extencion .doc entonces le ordenas que copie los .doc a la carpeta y te ahorras codigo.

    Código:
    FileCopy "C:\Documents and Settings\Documentos\carpeta1\*.doc", "C:\Documents and Settings\Documentos\Todos los archivos\"
    y asi con todas las carpetas hasta terminar,trata de poner todos estos codigos en el Sub_Main del programa tuyo asi los copia antes de que se ejecute el evento Form_Load y evitar errores.

    despues para borrar todos los archivos que copiaste usamos una funcion que permite borrar todos los archivos de una carpeta.por ejemplo usa esta:

    En un Modulo:


    Código:
    Public Sub Delete(DirPath As String, DelDir As Boolean)
    On Error GoTo error
    Kill DirPath$ & "*.*"
    If DelDir = True Then
    RmDir DirPath$
    End If
    Exit Sub
    error: MsgBox Err.Description, vbExclamation, "Error"
    End Sub
    En el Formualario,cuando terminas el programa.


    Código:
    Private Sub Form_Unload()
    Delete "C:\Documents and Settings\Documentos\Todos los archivos\", False
    End Sub
    y ahi te borra todos los archivos que copiaste,si tenes otra consulta postea.

    pero el problema tuyo es cuando lo llevas a otra pc las rutas no van a servir y los archivos no van a estar.entonces si o si los vas a tener que llevar tambien junto con tu proyecto en una carpeta que este en la carpeta de tu proyecto por lo tanto todos estos codigos no van a servir y te vas a ahorrar copiar y borrar solamente tenes que cargarlos y listo.

    tambien podrias poner todos los archivos en un unico archivo .RES y asi abrirlos a cada uno cuando quieras y solo tendrias un archivo que llevar,claro el tamaño de este seria la suma del tamaño de todos los archivos ya que estan todos juntos ,pero en uno solo.

    saludos.
    Edited by: seba123neo
    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  6. #6
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado



    Gracias por responder otra vez,
    Me viene muy bien el proc del borrado. Pero se da el caso de que en un mismo directorio tengo tipos de documentos distintos, entonces he intentado poner \*.* y peta.
    Como puedo copiar un montón de documentos distintos en una carpeta??
    Muchas gracias compañero de batalla!!!

  7. #7
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Buenas,
    Asi no funciona y creo que se porqué.
    FileCopy "C:\Documents and Settings\Documentos\carpeta1\doc1.doc", "C:\Documents and Settings\Documentos\Todos los archivos\doc1.doc"
    Si lo pones de esta maneraorigenruta + nombre y destino ruta + nombre funciona bien, pero si pones *.doc peta, tambien he intentado poner *.* y tambien peta, pone que no encuentra la ruta.
    Saludos.

  8. #8
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Holaaaa,
    Nadie me puede decir como hacer para copiar ficheros masivos???
    Con el filecopy creo q solo se puede copiar de uno en uno.
    Debería de recorrer todos los ficheros y copiarlos uno a uno???
    O hay una manera mas rapida y sencilla??
    Help me, please!!!

  9. #9
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado


    Hola,tenes razon pensaba que el filecopy agarraba el * para copiar todos los archivos de una determinada extencion.mejor usa FSO que si funciona.aca te dejo un ejemplo.primero añadi la referencia a Microsoft Scripting Runtime.

    Código:
    Private Sub Form_Load()
    Dim Obj_Fso As Object
    Set Obj_Fso = CreateObject("Scripting.FileSystemObject")
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    fso.CopyFile "C:\origen\*.zip", "C:\destino\"
    Set fso = Nothing
    End Sub
    ahi podes usar el * para copiar archivos con su determinada extencion,en este caso me copia todos los archivos .zip a la otra carpeta.

    saludos.

    Edited by: seba123neo
    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  10. #10
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Muchas gracias seba123neo!!!
    De esta manera lo estoy haciendo ya que no se podia usar el *
    En vez de hacer el fso.CopyFile lo que he hecho es hacer el FileCopy con el dato f1 que me da el nombre del fichero y la ruta.
    Mas o menos de esta manera.

    Public Sub copia()
    Dim fso, f, sf, f1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder(App.Path & "\normativa\1 Convenios internacionales")
    Set sf = f.Files
    For Each f1 In sf
    FileCopy f1, App.Path & "\normativa\Todos los archivos\" & f1.Name
    Next

    End Sub

    De esta manera funciona, y he probado de tu manera y peta.
    De todos muchas gracias!!!!

  11. #11
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado



    Buenas,
    Seba123neo, tengo una pregunta para ti.
    Tu pusistes esto:

    y asi con todas las carpetas hasta terminar,trata de poner todos estos codigos en el Sub_Main del programa tuyo asi los copia antes de que se ejecute el evento Form_Load y evitar errores.

    Como puedo poner estos codigos en el Sub_Main???
    Es que no se donde se pone!!
    Gracias.

  12. #12
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado

    Hola el Sub_Main es digamos un procedimiento que hace que todo el codigo que pongas en el se ejecute antes del Form_Load.

    para hacerlo tenes que crear el Sub en un modulo,por ejemplo:

    Código:
    Private Sub Main()
    MsgBox "Hola"
    End Sub
    pero con eso no funciona todavia,ahora anda al menu de visual basic Proyecto-->Propiedades de Proyecto y te va a aparecer un formulario donde dice objeto inicial selecciona el Sub_Main y no un formulario y pone aceptar y listo.

    saludos.

    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

  13. #13
    Avatar de larry
    larry está desconectado Senior Member Avanzad@
    Fecha de ingreso
    28 may, 07
    Ubicación
    Spain
    Mensajes
    135

    Predeterminado

    Joder tio, eres un crack!!!! Funciona de puta madre!!!
    Sabia lo de propiedas de proyecto y demas pero no como ponerlo y lo que he hecho al final es con el ejemplo que me pones:
    Private Sub Main()
    'Cargo los datos en la MDB y copio los docs en la carpeta
    frmMain.Show 'que es el formulario principal
    End Sub
    Muchas gracias seba123neo, el puto amo!!!

    PD: Que te parece la forma de copiar que hago con cualquier tipo de extensión???
    Porque la tuya no funcionaba bien.

  14. #14
    Avatar de seba123neo
    seba123neo está desconectado Moderador Guru
    Fecha de ingreso
    19 oct, 06
    Ubicación
    Argentina
    Mensajes
    2,766

    Predeterminado

    me parece buena la funcion que creaste para copiarlos,mejor que la que te puse.cada uno siempre crea las funciones necesarias para su programa,partiendo de la base de otras funciones.vos la modificaste y obtuviste lo que querias partiendo de un ejemplo base,bien hecho.

    saludos.

    Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein

Temas similares

  1. PictureBox rapido
    Por mistervb en el foro Eficiencia y rendimiento: metodos de optimizacion de codigo
    Respuestas: 5
    Último mensaje: 30/08/2012, 00:02
  2. Borrar,Copiar,Mover, etc; Archivos y Dirs
    Por Zitro en el foro Gestion de archivos
    Respuestas: 4
    Último mensaje: 18/05/2008, 11:18
  3. Copiar ficheros a un CD
    Por JUCASABU en el foro Visual Basic 6.0
    Respuestas: 3
    Último mensaje: 31/08/2007, 11:07
  4. hacer un programa mas rapido:
    Por nanotech en el foro Visual Basic 6.0
    Respuestas: 7
    Último mensaje: 05/02/2007, 10:48
  5. es más rápido una colección o un array???
    Por Post-Newbie en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 20/04/2006, 09:00

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados