FolderClean

Elimina todos los archivos en una carpeta especificada.

bool  FolderClean(
   string  folder_name,       // cadena con el nombre de subcarpeta
   int     common_flag=0      // zona de alcance
   );

Parámetros

folder_name

[in]  Nombre del directorio donde hay que eliminar todos los archivos. Contiene la ruta entera hacia la carpeta.

common_flag=0

[in] Bandera que determina la ubicación de la carpeta. Si es common_flag=FILE_COMMON, la carpeta se encuentra en la carpeta compartida de todos los terminales de cliente \Terminal\Common\Files. De lo contrario, la carpeta se encuentra en la carpeta local (MQL5\files o MQL5\tester\files en caso de prueba).

Valor devuelto

Devuelve true en caso de éxito, de lo contrario devuelve false.

Nota

Cuidado con usar esta función porque todos los archivos y todos los subdirectorios anidados se eliminan sin que se pueda recuperarlos.

Ejemplo:

//+------------------------------------------------------------------+
//|                                             Demo_FolderClean.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://team.metaquotes.ru/email/view/599588"
#property version   "1.00"
//--- descripción
#property description "Este script muestra un ejemplo de uso de FolderClean()."
#property description "Primero se crean los archivos en la carpeta especificada utilizando la función FileOpen()."
#property description "Luego, antes de eliminar los archivos, se muestra el aviso utilizando MessageBox()."
 
//--- mostraremos la ventana de los parámetros de entrada durante el inicio del script
#property script_show_inputs
//--- parámetros de entrada
input string   foldername="demo_folder";  // crearemos la carpeta en MQL5/Files/
input int      files=5;                   // número de archivos que vamos a crear y eliminar
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//--- primero abrimos o creamos archivos en la carpeta de datos de nuestro terminal
   for(int N=0;N<files;N++)
     {
      //--- nombre del archivo como 'demo_folder\testfileN.txt'
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- abrimos el archivo con la bandera para escribir, en este caso la carpeta 'demo_folder' se crea automáticamente
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- veremos si la función FileOpen() ha trabajado con éxito
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("Fallo al crear el archivo %s. Código del error ",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("El archivo %s ha sido abierto con éxito",filemane);
         //--- ya no necesitamos el archivo abierto, hay que cerrarlo sí o sí
         FileClose(handle);
        }
     }
 
//--- comprobaremos el número de archivos en la carpeta 
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("En total, la carpeta %s contiene %d archivos",foldername,k);
 
//--- mostramos la ventana de diálogo y preguntamos al usuario
   int choice=MessageBox(StringFormat("¿Desea eliminar de la carpeta %s %d archivos, continuar?",foldername,k),
                         "Eliminando archivos de la carpeta",
                         MB_YESNO|MB_ICONQUESTION); //  habrá dos botones - "Yes" y "No"
   ResetLastError();
 
//--- ejecutaremos acciones en función de la opción seleccionada
   if(choice==IDYES)
     {
      //--- empezamos a eliminar
      PrintFormat("Intento de eliminar todos los archivos de la carpeta %s",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("Archivos eliminados con éxito, en la carpeta %s quedan %d archivos",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("Fallo al eliminar los archivos de la carpeta %s. Código del error %d",foldername,GetLastError());
     }
   else
      PrintFormat("Eliminación cancelada");
//---
  }
//+------------------------------------------------------------------+
//| devuelve el número de archivos en la carpeta especificada                   |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- si ha sido encontrado por lo menos un archivo, seguimos buscando el resto
   if(handle!=INVALID_HANDLE)
     {
      //--- mostraremos el nombre del archivo
      PrintFormat("ha sido encntrado el archivo %s",filename);
      //--- aumentaremos el contador de archivos/carpetas encontrados
      count++;
      //--- iniciamos la búsqueda en todos los archivos/carpetas 
      while(FileFindNext(handle,filename))
        {
         PrintFormat("ha sido encontrado el archivo %s",filename);
         count++;
        }
      //--- es obligatorio cerrar el manejador del buscador al finalizar
      FileFindClose(handle);
     }
   else // fallo al obtener el manejador
     {
      PrintFormat("Fallo al realizar la búsqueda de archivos en la carpeta %s",path);
     }
//--- devolveremos el resultado
   return count;
  }

Véase también

FileFindFirst, FileFindNext, FileFindClose