- 显示:
- 1538
- 等级:
- 已发布:
- 2013.10.25 08:43
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
这段脚本从客户端文件夹中依次获取 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 Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1633

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

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