FoxPro/Visual FoxPro - Borrar archivos de una carpeta siempre y cuando cumpla una condición VFP9

   
Vista:

Borrar archivos de una carpeta siempre y cuando cumpla una condición VFP9

Publicado por Mina (19 intervenciones) el 23/10/2015 19:19:05
Estoy utilizando la siguiente función para borrar archivos de cualquier extensión de una carpeta

Delete File (ruta+"archivo.extension" ) recycle

Lo hace perfectamente, pero mi pregunta es como borrar solos los archivos cuya última fecha de modificación sea de días anteriores a la fecha actual. ¿Cómo incluyo esa condición?, ya que no quiero que me borre todo, solo los que cumplan con esa condición

¡Saludos!
Agradezco su apoyo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo

Borrar archivos de una carpeta siempre y cuando cumpla una condición VFP9

Publicado por Eduardo (78 intervenciones) el 23/10/2015 23:36:09
Utilice la función fdate(nombrearchivo)

Esta función le retorna la fecha del archivo y con su resultado haga las condiciones.

Saludos
Eduardo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Borrar archivos de una carpeta siempre y cuando cumpla una condición VFP9

Publicado por Fidel José (321 intervenciones) el 23/10/2015 23:48:13
Tienes la funcion ADir() que te devuelve un array con
Nombre ARchivo, Tamaño, Fecha (ultima modicacion) , Hora (idem anterior), atributos

Ejemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abel

Borrar archivos de una carpeta siempre y cuando cumpla una condición VFP9

Publicado por Abel (23 intervenciones) el 02/11/2015 15:46:27
Un código simple para hacer lo que necesitas Mina, es el siguiente:

1. Primero te posicionas sobre la carpeta que necesitas leer los archivos a borrar... y haces..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ADIR(aArchivos) 					        && Crear Matris de lo que contiene tu directorio actual.
nCuantos = ALEN(aArchivos,1)  		&& Contar la cantidad de archivos leidos del disco.
IF nCuantos=0 						&& Si no encontró ningún archivo volver.
	RETURN
ENDIF
 
FOR x=1 TO nCuantos
	NombreArchivo = aArchivos(x,1) 	&& Nombre del Archivo leído.
	FechaArchivo  = aArchivos(x,3) 	&& Fecha del arhivo.
 
	&&/ * Aquí pones tu condición de comparar fechas.
	IF FechaArchivo = <La Fecha que indiques>
		Delete File (ruta+"archivo.extension" ) recycle
	ENDIF
NEXT


Espero te sea de utilidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar