Copiar Carpeta/Directorio

Copiar Carpeta/Directorio

Postby RodolfoRBG » Sat Aug 20, 2011 12:12 am

Existe alguna instruccion que invoque a la funcion de Windows para copiar una carpeta completa (archivos y subdirectorios) de un HD a un USB?

Lo puedo hacer "a mano" pero no quiero inventar el hilo negro.

Salu2 y gracias.
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: Copiar Carpeta/Directorio

Postby FranciscoA » Mon Aug 22, 2011 2:28 pm

Rodolfo mira esto, tal vez es lo que quieres.
viewtopic.php?f=3&t=22218#p118291
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Copiar Carpeta/Directorio

Postby karinha » Mon Aug 22, 2011 3:03 pm

Francisco, en la práctica sería como?
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Copiar Carpeta/Directorio

Postby FranciscoA » Mon Aug 22, 2011 9:08 pm

karinha wrote:Francisco, en la práctica sería como?


Puedes hacerlo asi: (Recuerda enlazar Shell32.lib del directorio de Borlan)

//------------------
Function Prueba()
local cDirDest := "C:\FRANCISCO\DOCUMENTOS\DIVERSOS\"

ShCreateDirectory( cDirDest )

Return Nil


#pragma BEGINDUMP

#include <shlobj.h>
#include <hbapi.h>

HB_FUNC (SHCREATEDIRECTORY)
{
hb_retni( SHCreateDirectoryEx( NULL, hb_parc( 1 ), NULL ) );
}

#pragma ENDDUMP

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Copiar Carpeta/Directorio

Postby acuellar » Mon Aug 22, 2011 9:59 pm

Francisco

Con esta función se crea la cadena de directorios/folders.

Lo que pide Rodolfo es copiar todo el contenido

Algo asi:

Code: Select all  Expand view

LMKDIR "D:\SISTEMAS"
WaitRun("XCopy C:\SISTEMAS\*.* D:\SISTEMAS /S",0)
 


Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Copiar Carpeta/Directorio

Postby RodolfoRBG » Tue Aug 23, 2011 8:48 am

Francisco, gracias por responder, Adhemar, gracias por tu solucion.

Buscaba mas bien que fuera Windows quien hiciera la copia en su dialogo con animacion, meter, etc, pero la solucion que me das es muy practica. Gracias.

Salu2
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: Copiar Carpeta/Directorio

Postby sambomb » Tue Aug 23, 2011 12:04 pm

DirectoryRecurse(<cDisSpec>,[<cAttributes>])

This function return an array with all files and internal folders(with all files)
Then all you have to do is create the folders and move the files...

Code: Select all  Expand view


//cOrigin := "C:\Test\"
//cDestiny := "D:\Test\"

aFiles := DirectoryRecurse(cOrigin)

For i := 1 to Len(aFiles)

   If IsDirectory(aFiles[i,1])
      MakeDir(StrTran(aFiles[i,1],cOrigin, cDestiny))
   else
      CopyFile(aFiles[i,1],StrTran(aFiles[i,1],cOrigin, cDestiny))
   end

end
 
Email: SamirSSabreu@gmail.com
MSN: SamirAbreu@hotmail.com
Skype: SamirAbreu
xHarbour 1.1.0 + FwXh 8.02
xHarbour 1.2.1 + Fwhh 10.6
User avatar
sambomb
 
Posts: 385
Joined: Mon Oct 13, 2008 11:26 am
Location: Itaocara - RJ - Brasil

Re: Copiar Carpeta/Directorio

Postby acuellar » Tue Aug 23, 2011 3:21 pm

Thanks Sabomb

The sample don't work

This work
Code: Select all  Expand view

#Include "FiveWin.ch"
*
Function Main()
  cOrigen:="C:\SISTEMAS\*";cDestino:="D"
  aFiles := DirectoryRecurse(cOrigen)

  For i := 1 to Len(aFiles)
   cFile:=aFiles[i,1]
   cDir:=cDestino+Subs(cFilePath(cFile),2,Len(cFile))
   makedir(cDir)
   LZCOPYFILE( cOrigen,cDestino+Subs(cFile,2,Len(cFile)) )
 Next I
 MsgAlert("Se copiaron "+Str(I,3)+" archivos")

return nil
 


Regards,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Copiar Carpeta/Directorio

Postby RodolfoRBG » Tue Aug 23, 2011 8:17 pm

Gracias jovenes, pero a mi:

XBROWSE(DirectoryRecurse("C:\Prueba"))
XBROWSE(DirectoryRecurse("C:\Prueba*"))
XBROWSE(DirectoryRecurse("C:\Prueba\"))
XBROWSE(DirectoryRecurse("C:\Prueba\*"))
XBROWSE(DirectoryRecurse("C:\Prueba\*.*"))
XBROWSE(DirectoryRecurse("C:\Prueba",'D'))
XBROWSE(DirectoryRecurse("C:\Prueba*",'D'))
XBROWSE(DirectoryRecurse("C:\Prueba\",'D'))
XBROWSE(DirectoryRecurse("C:\Prueba\*",'D'))
XBROWSE(DirectoryRecurse("C:\Prueba\*.*",'D'))

me regresa un arreglo vacio en cada caso
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: Copiar Carpeta/Directorio

Postby acuellar » Tue Aug 23, 2011 8:53 pm

Rodolfo,

Funciona, has prueba con el ejemplo.

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Copiar Carpeta/Directorio

Postby FranciscoA » Tue Aug 23, 2011 10:33 pm

Amigos, el ejemplo de Cuellar funciona asi: cOrigen:="C:\SISTEMAS\*";cDestino:="D". Es rapidisimo (5800 files no grandes, en 5 segundos, en mi pobre equipo), pero...
así, no: cOrigen:="C:\SISTEMAS\BANCOS\*";cDestino:="D" (por ejemplo)
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Copiar Carpeta/Directorio

Postby acuellar » Tue Aug 23, 2011 11:26 pm

Francisco,
con la función que colocaste funciona
Sería asi:
Code: Select all  Expand view

#Include "FiveWin.ch"
*
Function Main()
  cOrigen:="D:\SISTEMAS\BANCOS\*";cDestino:="C"
  aFiles := DirectoryRecurse(cOrigen)

  For i := 1 to Len(aFiles)
   cFile:=aFiles[i,1]
   cDir:=cDestino+Subs(cFilePath(cFile),2,Len(cFile))
   ShCreateDirectory( cDir )

   LZCOPYFILE( cOrigen,cDestino+Subs(cFile,2,Len(cFile)) )
 Next I
 MsgAlert("Se copiaron "+Str(I,3)+" archivos")
 XBROWSE(aFiles)
return nil
 
#pragma BEGINDUMP

#include <shlobj.h>
#include <hbapi.h>

HB_FUNC (SHCREATEDIRECTORY)
{
 hb_retni( SHCreateDirectoryEx( NULL, hb_parc( 1 ), NULL ) );
}

#pragma ENDDUMP
 


No olvidar enlazar la librería SHELL32.LIB DE BCC

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Copiar Carpeta/Directorio

Postby FranciscoA » Wed Aug 24, 2011 1:54 am

Correcto, Adhemar. ¡Funciona! Gracias.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 70 guests