//--- mostramos la ventana de parámetros de entrada al iniciar el script
#property script_show_inputs
//--- parámetros de entrada
input ulong InpThresholdSize=20; // umbral del tamaño de archivos en kilobytes
input string InpBigFolderName="big"; // carpeta para archivos grandes
input string InpSmallFolderName="small"; // carpeta para archivos pequeños
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string file_name; // variable para almacenar los nombres de archivos
string filter="*.csv"; // filtro para buscar archivos
ulong file_size=0; // tamaño del archivo en bytes
int size=0; // número de archivos
//--- imprimimos la ruta de la carpeta en la que vamos a trabajar
PrintFormat("Trabajamos en la carpeta %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- recepción del manejador de búsqueda en la raíz de la carpeta común de todos los terminales
long search_handle=FileFindFirst(filter,file_name,FILE_COMMON);
//--- comprobamos si la función FileFindFirst()ha terminado su trabajo con éxito
if(search_handle!=INVALID_HANDLE)
{
//--- movemos los archivos en el ciclo dependiendo de su tamaño
do
{
//--- abrimos el archivo
ResetLastError();
int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON);
if(file_handle!=INVALID_HANDLE)
{
//--- obtenemos el tamaño del archivo
file_size=FileSize(file_handle);
//--- cerramos el archivo
FileClose(file_handle);
}
else
{
PrintFormat("Fallo al abrir el archivo %s, Código del error = %d",file_name,GetLastError());
continue;
}
//--- imprimimos el tamaño del archivo
PrintFormat("El tamaño del archivo %s es de %d bytes",file_name,file_size);
//--- definimos la ruta para mover el archivo
string path;
if(file_size>InpThresholdSize*1024)
path=InpBigFolderName+"//"+file_name;
else
path=InpSmallFolderName+"//"+file_name;
//--- desplazamos el archivo
ResetLastError();
if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON))
PrintFormat("El archivo %s ha sido desplazado",file_name);
else
PrintFormat("Error, código = %d",GetLastError());
}
while(FileFindNext(search_handle,file_name));
//--- cerramos el manejador de búsqueda
FileFindClose(search_handle);
}
else
Print("Files not found!");
}
|