下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

2013.10.25 08:43
脚本

演示_FileSize - MetaTrader 5脚本

| Chinese English Русский Español Deutsch 日本語 Português

显示:
513
等级:
投票: 25

这段脚本从客户端文件夹中依次获取 CSV 类型文件的长度。得到长度之后, 与 "InpThresholdSize" 阀值参数比较,并根据结果将文件置于 "InpBigFolderName", 或 "InpSmallFolderName" 文件夹中。所以,大、小文件将会分类。

除了使用 FileSize() 函数, 脚本中还用到 FileFindFirst(), FileFindNext() 和 FileFindClose() 函数来为文件分类以及 FileMove() 函数移动文件。

代码:

//--- 当脚本启动时显示输入参数窗口
#property script_show_inputs
//--- 输入参数
input ulong  InpThresholdSize=20;        // 文件大小阀值 单位 KB
input string InpBigFolderName="big";     // 大文件夹
input string InpSmallFolderName="small"; // 小文件夹
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string   file_name;      // 存放文件名变量
   string   filter="*.csv"; // 过滤搜索文件
   ulong    file_size=0;    // 文件大小 单位字节
   int      size=0;         // 文件数量
//--- 打印文件路径
   PrintFormat("工作路径 %s\\Files\\ 文件夹",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- 搜索句柄
   long search_handle=FileFindFirst(filter,file_name,FILE_COMMON);
//--- 检查是否 FileFindFirst() 执行成功
   if(search_handle!=INVALID_HANDLE)
     {
      //--- 根据文件大小,循环移动文件
      do
        {
         //--- 打开文件
         ResetLastError();
         int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON);
         if(file_handle!=INVALID_HANDLE)
           {
            //--- 文件尺寸
            file_size=FileSize(file_handle);
            //--- 关闭文件
            FileClose(file_handle);
           }
         else
           {
            PrintFormat("打开失败 %s 文件, 错误代码 = %d",file_name,GetLastError());
            continue;
           }
         //--- 打印文件尺寸
         PrintFormat("文件尺寸 %s 等于 %d 字节",file_name,file_size);
         //--- 定义文件移动路径
         string path;
         if(file_size>InpThresholdSize*1024)
            path=InpBigFolderName+"//"+file_name;
         else
            path=InpSmallFolderName+"//"+file_name;
         //--- 移动文件
         ResetLastError();
         if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON))
            PrintFormat("%s 文件移动",file_name);
         else
            PrintFormat("错误, 代码 = %d",GetLastError());
        }
      while(FileFindNext(search_handle,file_name));
      //--- 关闭搜索句柄
      FileFindClose(search_handle);
     }
   else
      Print("文件未发现!");
  }

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/1633

演示_FileReadDouble 演示_FileReadDouble

这段脚本简单示例如何使用 FileReadDouble() 函数

演示_FileWriteDouble 演示_FileWriteDouble

这段脚本简单示例如何使用 FileWriteDouble() 函数

演示_FileTell 演示_FileTell

这段脚本简单示例如何使用 FileTell() 函数

演示_FileWriteInteger 演示_FileWriteInteger

这段脚本简单示例如何使用 FileWriteInteger() 函数