Page 1 of 1

Borrado directorios

Posted: Wed Jul 18, 2007 8:21 am
by jmua
Buenos dias foro.
Alguien tiene hecha o puede decirme donde encontrar una funcion para eliminar un directorio completo, incluidos ficheros y subdirectorios dentro de el.
De antemano muchas gracias

Posted: Wed Jul 18, 2007 10:16 am
by Antonio Linares
José,

Esta debería servirte:

DLL32 FUNCTION RemoveDir(cPathName AS LPSTR) AS BOOL PASCAL ;
FROM "RemoveDirectoryA" LIB "Kernel32.Dll"

Posted: Thu Jul 19, 2007 5:35 am
by jmua
Gracias Antonio probare y veremos si funciona

Posted: Thu Jul 19, 2007 6:53 am
by jmua
Antonio Linares wrote:José,

Esta debería servirte:

DLL32 FUNCTION RemoveDir(cPathName AS LPSTR) AS BOOL PASCAL ;
FROM "RemoveDirectoryA" LIB "Kernel32.Dll"
Antonio he probado y solo funciona si el directorio esta vacio.
si tiene algun fichero no funciona.

Tendre que hacer una funcion que compruebe lo que tiene y borrar primero el contenido.

No la tendra hecha alguien por hay?

Gracias

Posted: Tue Jul 24, 2007 2:38 pm
by cuatecatl82
Saludos jmua:

Te paso una función que borra los archivos mediante mascara (*.*, *.CDX, etc), haz esto antes de borrar tu directorio, en este ejemplo borro los archivos .CDX de la carpeta COBRANZA de mi Sistema:

OJO (Verás que tengo implementado un meter para ver el progreso de borrado según el número de Archivos que existan en el directorio, si gustas lo puedes omitir)

---------------------------------------------------------------------
FUNCTION Borrar() //Esto lo Puedes Omitir, es solo pa darle Look

LOCAL oMeter1, oDlg

bDialogTask := { || BorraCDX(oMeter1) }

DEFINE DIALOG oDlg RESOURCE "OPTIMIZA" Title "Borrando Archivos"
oMeter1 = TProgress():Redefine( 200, oDlg )
ACTIVATE DIALOG oDlg CENTERED ON PAINT EVAL(bDialogTask)

Return nil

--------------------------------------------------
STATIC FUNCTION BorraCDX(oMeter) //Esto es lo que borra los Archivos

LOCAL aIndexFiles := {}
LOCAL aFil := {}
LOCAL nI := 0

//--> En el Directorio de Cobranza

aFil:= DIRECTORY( ( ".\COBRANZA\*.CDX" ) )
AEVAL( aFil, { | uFile | AADD( aIndexFiles, uFile ) } )

oMeter:SetRange(0, LEN(aIndexFiles))

FOR nI:= 1 TO LEN(aIndexFiles)
SYSREFRESH()
FERASE(".\COBRANZA\"+aIndexFiles[nI][1])
oMeter:SETPOS(nI)
NEXT nI

RETURN nil

Una vez eliminado todos los archivos de la carpeta, ya puedes proceder a borrarla con cualquier función que tengas.

Espero te sirva.. Saludos desde Chiapas México

Muy pronto mi portal electronico: www.sisa.unlugar.com

Posted: Wed Jul 25, 2007 5:34 am
by jmua
Gracias lo probare y veremos que hace

Re: Borrado directorios

Posted: Mon Nov 19, 2012 6:02 pm
by AIDA
Muy buena tu Funcion para borrar me fue de mucha utilidad :mrgreen:

GRACIAS!!!!! :D

Saluditos :wink: