PROCEDURE Delete_Files_In_folder
LPARAMETERS tcFolder , tdLastModified
*!* tcFolder: Carpeta en la cual se borrarán archivos
*!* Si se omite el parámetro se presenta GETDIR()
*!* tdLastModified: Type="D" Fecha desde la cual no se borrarán archivos
*!* Type="N" Cantidad de días que se restan de la fecha actual para
*!* determinar la fecha desde la cual no se borrarán archivos
#DEFINE _CRCL_ CHR(13)+CHR(10)
#DEFINE _TAB_ CHR(9)
TRY
LOCAL lnFiles,i,;
lcFileDelete,;
lnCountDeleted,;
lcStringDeleted,;
lcStringRemainder,;
lcString,;
lnStrMode,;
lcFileLog,;
loEx as Exception
LOCAL ARRAY laFiles(1)
IF VARTYPE(tdLastModified) = "N"
tdLastModified = DATE() - tdLastModified
ELSE
IF VARTYPE(tdlastModified) # "D" OR EMPTY(tdLastModified)
tdLastModified = DATE() - 6
ENDIF
ENDIF
IF EMPTY(m.tcFolder) OR !DIRECTORY(m.tcFolder)
m.tcFolder = GETDIR(FULLPATH("") , "Seleccione Carpeta","Borrado de Archivos", 48 )
ENDIF
lnCountDeleted = 0
IF !EMPTY(m.tcFolder) AND DIRECTORY(m.tcFolder)
lcFileLog = ADDBS( m.tcFolder )+"delete_files_in_folder.txt"
WAIT "Buscando Archivos en "+m.tcFolder WINDOW AT 20,25 NOWAIT
lnFiles = ADIR(laFiles,ADDBS(m.tcFolder)+"*.*","",1)
lcStringDeleted = REPLICATE(_TAB_,2) + "<Deleted>"+_CRCL_
lcStringRemainder = REPLICATE(_TAB_,2) + "<Remainder>" + _CRCL_
lcString = "<delete_files_in_folder>" + _CRCL_ ;
+ _TAB_ +"<folder>"+m.tcFolder+"</folder>"+_CRCL_ ;
+ _TAB_ +"<files>"+TRANSFORM(m.lnFiles)+"</files>" + _CRCL_ ;
+ _TAB_ +"<timestamp>"+TTOC(DATETIME(),3)+"</timestamp>" + _CRCL_ ;
+ _TAB_ +"<user>"+SYS(0)+"</user>" + _CRCL_ ;
+ _TAB_ +"<result>" + _CRCL_
WAIT "Quitando Archivos en "+m.tcFolder WINDOW AT 20,25 NOWAIT
FOR i = 1 TO m.lnFiles
IF laFiles[i,3] < m.tdLastModified
lcFileDelete = ADDBS(m.tcFolder) + laFiles[i,1]
DELETE FILE &lcFileDelete RECYCLE
lcStringDeleted = m.lcStringDeleted + REPLICATE(_TAB_,3) + laFiles[i,1] + _CRCL_
lnCountDeleted = m.lnCountDeleted + 1
ELSE
lcStringRemainder = m.lcStringRemainder + REPLICATE(_TAB_,3) + laFiles[i,1] +_CRCL_
ENDIF
NEXT
lcString = m.lcString ;
+ m.lcStringDeleted ;
+ REPLICATE(_TAB_ , 2) +"</Deleted>" + _CRCL_ ;
+ m.lcStringRemainder ;
+ REPLICATE(_TAB_ , 2) +"</Remainder>" + _CRCL_ ;
+ _TAB_ + "</result>" + _CRCL_ ;
+ "</delete_files_in_folder>" + _CRCL_
STRTOFILE( m.lcString , m.lcFileLog , m.lnStrMode )
ENDIF
CATCH TO loEx
loex.UserValue = PROGRAM()
* ShowError(loex)
FINALLY
WAIT CLEAR
#UNDEFINE _CRCL_
#UNDEFINE _TAB_
IF !EMPTY(m.tcFolder)
MESSAGEBOX(TRANSFORM(m.lnCountDeleted)+ " Archivos Quitados de "+m.tcFolder,0,PROPER(PROGRAM()))
ENDIF
ENDTRY