Avalados por :

Cómo eliminar archivos antiguos en BODS de forma eficiente

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

¡Hola!,

¡Ayuda!

¿Podemos eliminar archivos más antiguos que x días usando la función integrada de BODS?

file_delete( '\\\\sharedpath\\test_file\\*.txt');

Esta línea está eliminando todos los archivos txt dentro de la ruta especificada.

Solo quiero eliminar archivos de 30 días de antigüedad.

O cualquier otra opción para eliminar archivos más antiguos que x días usando alguna función integrada de BODS.

Saludos,

Bittu

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Nawfal,

¿Hay alguna restricción para la cantidad de archivos?

Porque tengo aproximadamente 1.2 lakh archivos, pero el código no elimina más de 40 archivos en una sola ejecución.

Sería de gran ayuda si pudiéramos eliminar todos los archivos para el rango de tiempo dado.

Saludos,

Bittu

image.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Hola Nawfal!

Gracias, esto funciona 😉

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hi Bittu,

Ejecutar comando OS a través de la función exec() de BODS como lo describe joseph_muiruri puede ser más fácil, especialmente en Linux. Sin embargo, si estás decidido a usar solo la función integrada de BODS, entonces esta solución puede serte útil.

1- Crea estas variables globales a nivel de trabajo:

2- En un script escribe lo siguiente:

$G_FilePath='//sharedpath/test_file/*.txt'; #La ruta de red
$G_RetentionDays =30; #Período de retención en días
$G_FileCounter=1; #Inicializar contador de bucle

print(wait_for_file( $G_FilePath, 0, 0,-1,$G_FileList, $G_FileCount ,',')); #producir lista de archivos en la ruta dada con su conteo
print('Archivos encontrados en la ruta dada:'|| $G_FileList); #imprimir lista
print('Número de archivos en la ruta: '||$G_FileCount); #imprimir cuántos

while ($G_FileCounter<=$G_FileCount) #verificar cada archivo en la ruta para su fecha de modificación
 begin
    $G_FileName=print(word_ext( $G_FileList,$G_FileCounter,',')); #Verificar un archivo a la vez
    $G_FileChangedDate =print(get_file_attribute(  $G_FileName,'date_modified'));#obtener atributo de fecha de archivo, puede cambiarse a data_created
    $G_FileName=replace_substr( $G_FileName,'//','\\\\');#Ajustar la ruta UNC para que se adapte a la función de eliminación de archivos
    if ($G_FileChangedDate <sysdate() - $G_RetentionDays)
      begin 
         print( file_delete( $G_FileName));#eliminar archivo antiguo
	 print('Archivo :'||$G_FileName||' eliminado');
      end
    $G_FileCounter=$G_FileCounter+1;
 end
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias por visitar la Comunidad de SAP para obtener respuestas a tus preguntas. Dado que esta es tu primera pregunta, te recomiendo que te familiarices con Comunidad de Preguntas y Respuestas , ya que la visión general proporciona consejos para preparar preguntas que atraigan respuestas de nuestros miembros.

Si lo deseas, puedes modificar tu pregunta seleccionando Acciones y luego Editar.

Al agregar una Imagen a tu perfil, animas a los lectores a responder.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?