Borrar archivos según fecha de creación

16/08/2010 - 19:57 por Miguel | Informe spam
Tengo una aplicación que va creando informes en formato PDF. en un
directorio.
¿Cómo puedo borrar los archivos creados hace, por ejemplo más de una
semana, desde access?

La función Kill solo permite comodines en el nombre y/o la extensión.
¿Hay alguna otra función?

Gracias.

Preguntas similare

Leer las respuestas

#1 Emilio
16/08/2010 - 22:23 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!
tal vez puedas adaptar este código

'**************************************************************************­*********
'* lista los archivos de una determinada carpeta y sus hijas, cuya fecha sea
inferior
'* en ocho o más días, la actual
'* deberá incluir una referencia a la librería Microsoft Scrpiting Runtime
'* uso: ListaArchivos("C:\Mis Documentos")
''*************************************************************************­**********

Public Sub ListaArchivos(strCarpetaRaiz As String)

Dim objFSO As FileSystemObject, _
objCarpetaRaiz As Scripting.Folder, _
objFolders As Scripting.Folders, _
objFolder As Scripting.Folder, _
objFiles As Scripting.Files, _
objFile As Scripting.file

Set objFSO = New Scripting.FileSystemObject

Set objCarpetaRaiz = objFSO.GetFolder(strCarpetaRaiz)

Set objFolders = objCarpetaRaiz.SubFolders

For Each objFolder In objFolders
Set objFiles = objFolder.Files

For Each objFile In objFiles

'Si la fecha del archivo es menor a la fecha actual menos 8
días..entonces borrar
If objFile.DateCreated <= (Date - 8) Then
Debug.Print objFile.name
End If ' objFile.DateCreated <= (Date - 8)

Next objFile
Set objFiles = Nothing

Next objFolder

Set objFolders = Nothing
Set objCarpetaRaiz = Nothing
Set objFSO = Nothing

End Sub ' ListaArchivos


Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Miguel" escribió en el mensaje de noticias
news:
Tengo una aplicación que va creando informes en formato PDF. en un
directorio.
¿Cómo puedo borrar los archivos creados hace, por ejemplo más de una
semana, desde access?

La función Kill solo permite comodines en el nombre y/o la extensión.
¿Hay alguna otra función?

Gracias.

__________ Information from ESET Smart Security, version of virus signature
database 5371 (20100816) __________

The message was checked by ESET Smart Security.

http://www.eset.com




__________ Information from ESET Smart Security, version of virus signature database 5371 (20100816) __________

The message was checked by ESET Smart Security.

http://www.eset.com
Respuesta Responder a este mensaje
#2 Emilio
17/08/2010 - 18:39 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

he reconstruido el código:

'*******************************************************************************
'* BorrarArchivos
'* elimina los archivos de la carpeta indicada si su fecha de creación es
'* anterior a la fecha pasada como parámetro
'* Argumentos: strRutaCarpeta => ruta completa de la carpeta a vacíar
'* datFechaCreacion => (opcional) fecha a comparar, por defecto
'* ayer
'* blnSubCarpetas => (opcional) eliminar archivos de
subcarpetas
'* uso: BorrarArchivos Environ("Temp"), #08/15/10#, True
'* ESH 17/08/10 18:26
'* Si utilizas este codigo, respeta la autoría y los créditos
'*******************************************************************************

Public Sub BorrarArchivos(strRutaCarpeta As String, Optional
datFechaCreacion As Date, Optional blnSubCarpetas As Boolean)
Dim fso As Object, _
Carpeta As Object, _
subCarpeta As Object, _
Archivo As Object

On Error GoTo BorrarArchivos_TratamientoErrores

DoCmd.Hourglass True
' si no se ha pasado ruta de carpeta salgo
If Nz(strRutaCarpeta, vbNullString) = vbNullString Then GoTo
BorrarArchivos_Salir
If Not Right(strRutaCarpeta, 1) = "\" Then strRutaCarpeta = strRutaCarpeta &
"\"
' si no se ha pasado fecha, utilizo la de ayer
If datFechaCreacion = 0 Then datFechaCreacion = Date - 1

Set fso = CreateObject("Scripting.FileSystemObject")

Set Carpeta = fso.GetFolder(strRutaCarpeta)
' recorro la carpeta eliminando aquellos archivos cuya fecha de creación sea
anterior a la indicada
For Each Archivo In Carpeta.files
If Archivo.DateCreated < datFechaCreacion Then
Archivo.Delete
End If
Next Archivo

' si se ha solicitado borrar las subcarpetas hago una llamada recursiva al
mismo procedimiento
If blnSubCarpetas Then
For Each subCarpeta In Carpeta.subFolders
BorrarArchivos strRutaCarpeta & subCarpeta.Name, datFechaCreacion,
blnSubCarpetas
Next
End If
' si la carpeta está vacía, la borro
If Carpeta.files.Count = 0 Then Carpeta.Delete


BorrarArchivos_Salir:
Set fso = Nothing
DoCmd.Hourglass False
On Error GoTo 0
Exit Sub

BorrarArchivos_TratamientoErrores:
If Err = 70 Then ' Permiso denegado
Debug.Print Archivo.DateLastModified, Archivo
Resume Next
Else
MsgBox "Error " & Err & " en proc.: BorrarArchivos de Módulo: mdlGeneral
(" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
End If
Resume BorrarArchivos_Salir
Resume Next
End Sub ' BorrarArchivos


Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Emilio" escribió en el mensaje de noticias
news:i4c6o8$dvv$
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!
tal vez puedas adaptar este código

'**************************************************************************­*********
'* lista los archivos de una determinada carpeta y sus hijas, cuya fecha
sea inferior
'* en ocho o más días, la actual
'* deberá incluir una referencia a la librería Microsoft Scrpiting Runtime
'* uso: ListaArchivos("C:\Mis Documentos")
''*************************************************************************­**********

Public Sub ListaArchivos(strCarpetaRaiz As String)

Dim objFSO As FileSystemObject, _
objCarpetaRaiz As Scripting.Folder, _
objFolders As Scripting.Folders, _
objFolder As Scripting.Folder, _
objFiles As Scripting.Files, _
objFile As Scripting.file

Set objFSO = New Scripting.FileSystemObject

Set objCarpetaRaiz = objFSO.GetFolder(strCarpetaRaiz)

Set objFolders = objCarpetaRaiz.SubFolders

For Each objFolder In objFolders
Set objFiles = objFolder.Files

For Each objFile In objFiles

'Si la fecha del archivo es menor a la fecha actual menos 8
días..entonces borrar
If objFile.DateCreated <= (Date - 8) Then
Debug.Print objFile.name
End If ' objFile.DateCreated <= (Date - 8)

Next objFile
Set objFiles = Nothing

Next objFolder

Set objFolders = Nothing
Set objCarpetaRaiz = Nothing
Set objFSO = Nothing

End Sub ' ListaArchivos


Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Miguel" escribió en el mensaje de noticias
news:
Tengo una aplicación que va creando informes en formato PDF. en un
directorio.
¿Cómo puedo borrar los archivos creados hace, por ejemplo más de una
semana, desde access?

La función Kill solo permite comodines en el nombre y/o la extensión.
¿Hay alguna otra función?

Gracias.

__________ Information from ESET Smart Security, version of virus
signature database 5371 (20100816) __________

The message was checked by ESET Smart Security.

http://www.eset.com




__________ Information from ESET Smart Security, version of virus
signature database 5371 (20100816) __________

The message was checked by ESET Smart Security.

http://www.eset.com




__________ Information from ESET Smart Security, version of virus
signature database 5373 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com







__________ Information from ESET Smart Security, version of virus signature database 5373 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com
Respuesta Responder a este mensaje
#3 Miguel
17/08/2010 - 23:48 | Informe spam
On 17 ago, 18:39, "Emilio" wrote:
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

he reconstruido el código:

'************************************************************************** *****
'* BorrarArchivos
'* elimina los archivos de la carpeta indicada si su fecha de creación es
'* anterior a la fecha pasada como parámetro
'* Argumentos: strRutaCarpeta   => ruta completa de la carpeta a vacíar
'*             datFechaCreacion => (opcional) fecha a comparar, por defecto
'*                                 ayer
'*             blnSubCarpetas   => (opcional) eliminar archivos de
subcarpetas
'* uso: BorrarArchivos Environ("Temp"), #08/15/10#, True
'* ESH 17/08/10 18:26
'* Si utilizas este codigo, respeta la autoría y los créditos
'************************************************************************** *****

Public Sub BorrarArchivos(strRutaCarpeta As String, Optional
datFechaCreacion As Date, Optional blnSubCarpetas As Boolean)
Dim fso As Object, _
    Carpeta As Object, _
    subCarpeta As Object, _
    Archivo As Object

On Error GoTo BorrarArchivos_TratamientoErrores

DoCmd.Hourglass True
' si no se ha pasado ruta de carpeta salgo
If Nz(strRutaCarpeta, vbNullString) = vbNullString Then GoTo
BorrarArchivos_Salir
If Not Right(strRutaCarpeta, 1) = "\" Then strRutaCarpeta = strRutaCarpeta &
"\"
' si no se ha pasado fecha, utilizo la de ayer
If datFechaCreacion = 0 Then datFechaCreacion = Date - 1

Set fso = CreateObject("Scripting.FileSystemObject")

Set Carpeta = fso.GetFolder(strRutaCarpeta)
' recorro la carpeta eliminando aquellos archivos cuya fecha de creación sea
anterior a la indicada
For Each Archivo In Carpeta.files
   If Archivo.DateCreated < datFechaCreacion Then
      Archivo.Delete
   End If
Next Archivo

' si se ha solicitado borrar las subcarpetas hago una llamada recursiva al
mismo procedimiento
If blnSubCarpetas Then
For Each subCarpeta In Carpeta.subFolders
   BorrarArchivos strRutaCarpeta & subCarpeta.Name, datFechaCreacion,
blnSubCarpetas
Next
End If
' si la carpeta está vacía, la borro
If Carpeta.files.Count = 0 Then Carpeta.Delete

BorrarArchivos_Salir:
   Set fso = Nothing
   DoCmd.Hourglass False
   On Error GoTo 0
   Exit Sub

BorrarArchivos_TratamientoErrores:
If Err = 70 Then  ' Permiso denegado
   Debug.Print Archivo.DateLastModified, Archivo
   Resume Next
Else
   MsgBox "Error " & Err & " en proc.: BorrarArchivos de Módulo: mdlGeneral
(" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
End If
   Resume BorrarArchivos_Salir
Resume Next
End Sub        ' BorrarArchivos

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO comhttp://www.mvp-access.com/forohttp://www.mvp-access.es/emilio
"Emilio" escribió en el mensaje de noticiasnews:i4c6o8$dvv$





> ¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
> sirvió o no la respuesta dada. Muchas gracias
> Hola!
> tal vez puedas adaptar este código

> '************************************************************************** ­*********
> '* lista los archivos de una determinada carpeta y sus hijas, cuya fecha
> sea inferior
> '* en ocho o más días, la actual
> '* deberá incluir una referencia a la librería Microsoft Scrpiting Runtime
> '* uso: ListaArchivos("C:\Mis Documentos")
> ''************************************************************************* ­**********

> Public Sub ListaArchivos(strCarpetaRaiz As String)

> Dim objFSO As FileSystemObject, _
>    objCarpetaRaiz  As Scripting.Folder, _
>    objFolders As Scripting.Folders, _
>    objFolder As Scripting.Folder, _
>    objFiles As Scripting.Files, _
>    objFile As Scripting.file

> Set objFSO = New Scripting.FileSystemObject

> Set objCarpetaRaiz = objFSO.GetFolder(strCarpetaRaiz)

> Set objFolders = objCarpetaRaiz.SubFolders

> For Each objFolder In objFolders
>    Set objFiles = objFolder.Files

>    For Each objFile In objFiles

>        'Si la fecha del archivo es menor a la fecha actual menos 8
> días..entonces borrar
>        If objFile.DateCreated <= (Date - 8) Then
>            Debug.Print objFile.name
>        End If  ' objFile.DateCreated <= (Date - 8)

>    Next objFile
>    Set objFiles = Nothing

> Next objFolder

> Set objFolders = Nothing
> Set objCarpetaRaiz = Nothing
> Set objFSO = Nothing

> End Sub         ' ListaArchivos

> Saludos a todos desde Huelva

> Emilio [MS-MVP Access 2006/10]
> miliuco56 ALGARROBA hotmail PUNTO com
>http://www.mvp-access.com/foro
>http://www.mvp-access.es/emilio
> "Miguel" escribió en el mensaje de noticias
>news:
> Tengo una aplicación que va creando informes en formato PDF. en un
> directorio.
> ¿Cómo puedo borrar los archivos creados hace, por ejemplo más de una
> semana, desde access?

> La función Kill solo permite comodines en el nombre y/o la extensión.
> ¿Hay alguna otra función?

> Gracias.

> __________ Information from ESET Smart Security, version of virus
> signature database 5371 (20100816) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

> __________ Information from ESET Smart Security, version of virus
> signature database 5371 (20100816) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

> __________ Information from ESET Smart Security, version of virus
> signature database 5373 (20100817) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

__________ Information from ESET Smart Security, version of virus signature database 5373 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com



Muchas gracias, no necesito todo el código. Pero sí que tiene lo que
necesito.

Saludos cordiales.
Respuesta Responder a este mensaje
#4 Emilio
18/08/2010 - 16:09 | Informe spam
:-))

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Miguel" escribió en el mensaje de noticias
news:
On 17 ago, 18:39, "Emilio" wrote:
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

he reconstruido el código:

'**************************************************************************
*****
'* BorrarArchivos
'* elimina los archivos de la carpeta indicada si su fecha de creación es
'* anterior a la fecha pasada como parámetro
'* Argumentos: strRutaCarpeta => ruta completa de la carpeta a vacíar
'* datFechaCreacion => (opcional) fecha a comparar, por defecto
'* ayer
'* blnSubCarpetas => (opcional) eliminar archivos de
subcarpetas
'* uso: BorrarArchivos Environ("Temp"), #08/15/10#, True
'* ESH 17/08/10 18:26
'* Si utilizas este codigo, respeta la autoría y los créditos
'**************************************************************************
*****

Public Sub BorrarArchivos(strRutaCarpeta As String, Optional
datFechaCreacion As Date, Optional blnSubCarpetas As Boolean)
Dim fso As Object, _
Carpeta As Object, _
subCarpeta As Object, _
Archivo As Object

On Error GoTo BorrarArchivos_TratamientoErrores

DoCmd.Hourglass True
' si no se ha pasado ruta de carpeta salgo
If Nz(strRutaCarpeta, vbNullString) = vbNullString Then GoTo
BorrarArchivos_Salir
If Not Right(strRutaCarpeta, 1) = "\" Then strRutaCarpeta = strRutaCarpeta
&
"\"
' si no se ha pasado fecha, utilizo la de ayer
If datFechaCreacion = 0 Then datFechaCreacion = Date - 1

Set fso = CreateObject("Scripting.FileSystemObject")

Set Carpeta = fso.GetFolder(strRutaCarpeta)
' recorro la carpeta eliminando aquellos archivos cuya fecha de creación
sea
anterior a la indicada
For Each Archivo In Carpeta.files
If Archivo.DateCreated < datFechaCreacion Then
Archivo.Delete
End If
Next Archivo

' si se ha solicitado borrar las subcarpetas hago una llamada recursiva al
mismo procedimiento
If blnSubCarpetas Then
For Each subCarpeta In Carpeta.subFolders
BorrarArchivos strRutaCarpeta & subCarpeta.Name, datFechaCreacion,
blnSubCarpetas
Next
End If
' si la carpeta está vacía, la borro
If Carpeta.files.Count = 0 Then Carpeta.Delete

BorrarArchivos_Salir:
Set fso = Nothing
DoCmd.Hourglass False
On Error GoTo 0
Exit Sub

BorrarArchivos_TratamientoErrores:
If Err = 70 Then ' Permiso denegado
Debug.Print Archivo.DateLastModified, Archivo
Resume Next
Else
MsgBox "Error " & Err & " en proc.: BorrarArchivos de Módulo: mdlGeneral
(" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
End If
Resume BorrarArchivos_Salir
Resume Next
End Sub ' BorrarArchivos

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail PUNTO
comhttp://www.mvp-access.com/forohttp://www.mvp-access.es/emilio
"Emilio" escribió en el mensaje de
noticiasnews:i4c6o8$dvv$





> ¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si
> te
> sirvió o no la respuesta dada. Muchas gracias
> Hola!
> tal vez puedas adaptar este código

> '**************************************************************************
> ­*********
> '* lista los archivos de una determinada carpeta y sus hijas, cuya fecha
> sea inferior
> '* en ocho o más días, la actual
> '* deberá incluir una referencia a la librería Microsoft Scrpiting
> Runtime
> '* uso: ListaArchivos("C:\Mis Documentos")
> ''*************************************************************************
> ­**********

> Public Sub ListaArchivos(strCarpetaRaiz As String)

> Dim objFSO As FileSystemObject, _
> objCarpetaRaiz As Scripting.Folder, _
> objFolders As Scripting.Folders, _
> objFolder As Scripting.Folder, _
> objFiles As Scripting.Files, _
> objFile As Scripting.file

> Set objFSO = New Scripting.FileSystemObject

> Set objCarpetaRaiz = objFSO.GetFolder(strCarpetaRaiz)

> Set objFolders = objCarpetaRaiz.SubFolders

> For Each objFolder In objFolders
> Set objFiles = objFolder.Files

> For Each objFile In objFiles

> 'Si la fecha del archivo es menor a la fecha actual menos 8
> días..entonces borrar
> If objFile.DateCreated <= (Date - 8) Then
> Debug.Print objFile.name
> End If ' objFile.DateCreated <= (Date - 8)

> Next objFile
> Set objFiles = Nothing

> Next objFolder

> Set objFolders = Nothing
> Set objCarpetaRaiz = Nothing
> Set objFSO = Nothing

> End Sub ' ListaArchivos

> Saludos a todos desde Huelva

> Emilio [MS-MVP Access 2006/10]
> miliuco56 ALGARROBA hotmail PUNTO com
>http://www.mvp-access.com/foro
>http://www.mvp-access.es/emilio
> "Miguel" escribió en el mensaje de noticias
>news:
> Tengo una aplicación que va creando informes en formato PDF. en un
> directorio.
> ¿Cómo puedo borrar los archivos creados hace, por ejemplo más de una
> semana, desde access?

> La función Kill solo permite comodines en el nombre y/o la extensión.
> ¿Hay alguna otra función?

> Gracias.

> __________ Information from ESET Smart Security, version of virus
> signature database 5371 (20100816) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

> __________ Information from ESET Smart Security, version of virus
> signature database 5371 (20100816) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

> __________ Information from ESET Smart Security, version of virus
> signature database 5373 (20100817) __________

> The message was checked by ESET Smart Security.

>http://www.eset.com

__________ Information from ESET Smart Security, version of virus
signature database 5373 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com



Muchas gracias, no necesito todo el código. Pero sí que tiene lo que
necesito.

Saludos cordiales.

__________ Information from ESET Smart Security, version of virus signature
database 5374 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com




__________ Information from ESET Smart Security, version of virus signature database 5374 (20100817) __________

The message was checked by ESET Smart Security.

http://www.eset.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida