Ayuda please
Publicado por peibol (14 intervenciones) el 06/10/2005 10:06:34
Hola a to2. Me estoy rompiendo los cuernos con esto y no puede ser. Necesito saber si existe una función o algo (LO QUE SEA) q me permita a partir de un directorio borrar todos los archivos (solo archivos) q por ejemplo sean inferiores al día actual q estén por debajo de ese directorio.
P.e. Parto del directorio C:\Trazas y por debajo de aqui tengo una estructura de subdirectorios y archivos (me da igual cual sea). El caso es que solo quiero borrar los archivos inferiores al día de hoy.
El saber qué son archivos y qué son directorios ya lo tengo, pero no soy capaz de recorrerme los sub-directorios de forma satisfactoria. Os paso el código que estoy usando, a ver si alguien ve lo que me falta
Private Function BorrarFicheros(ByVal Directorio As String)
Dim Fichero As String
'Buscamos los ficheros en el directorio
Fichero = Dir(Directorio & "*.*", vbDirectory)
Do Until Fichero = ""
If Fichero <> "." And Fichero <> ".." Then
'Si es un fichero comparamos la fecha
If (GetAttr(Directorio & Fichero) And vbArchive) = vbArchive Then
If Format(FileDateTime(Directorio & Fichero), "yyyymmdd") < Format(Now, "yyyymmdd") Then
Kill (Directorio & Fichero)
End If
'Si es un directorio...
ElseIf (GetAttr(Directorio & Fichero) And vbDirectory) = vbDirectory Then
Directorio = Directorio & Fichero & "\"
BorrarFicheros Directorio
End If
End If
Fichero = Dir
Loop
End Function
Se va metiendo bien por los subdirectorios pero solo por la primera rama cuando ha de saltar a la segunda me casca en la línea Fichero = Dir. Parece que se guarda el valor de la variable Fichero de la ultima instancia q se ha hecho a la función.
¿Alguien me puede echar un cable, o dos?
Gracias por adelantado
P.e. Parto del directorio C:\Trazas y por debajo de aqui tengo una estructura de subdirectorios y archivos (me da igual cual sea). El caso es que solo quiero borrar los archivos inferiores al día de hoy.
El saber qué son archivos y qué son directorios ya lo tengo, pero no soy capaz de recorrerme los sub-directorios de forma satisfactoria. Os paso el código que estoy usando, a ver si alguien ve lo que me falta
Private Function BorrarFicheros(ByVal Directorio As String)
Dim Fichero As String
'Buscamos los ficheros en el directorio
Fichero = Dir(Directorio & "*.*", vbDirectory)
Do Until Fichero = ""
If Fichero <> "." And Fichero <> ".." Then
'Si es un fichero comparamos la fecha
If (GetAttr(Directorio & Fichero) And vbArchive) = vbArchive Then
If Format(FileDateTime(Directorio & Fichero), "yyyymmdd") < Format(Now, "yyyymmdd") Then
Kill (Directorio & Fichero)
End If
'Si es un directorio...
ElseIf (GetAttr(Directorio & Fichero) And vbDirectory) = vbDirectory Then
Directorio = Directorio & Fichero & "\"
BorrarFicheros Directorio
End If
End If
Fichero = Dir
Loop
End Function
Se va metiendo bien por los subdirectorios pero solo por la primera rama cuando ha de saltar a la segunda me casca en la línea Fichero = Dir. Parece que se guarda el valor de la variable Fichero de la ultima instancia q se ha hecho a la función.
¿Alguien me puede echar un cable, o dos?
Gracias por adelantado
Valora esta pregunta


0