//+------------------------------------------------------------------+
//| 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;
}
|