//--- スクリプトの起動時に入力パラメータのウィンドウを表示する
#property script_show_inputs
//--- 入力パラメータ
input ulong InpThresholdSize=20; // キロバイト単位でのファイルのしきい値サイズ
input string InpBigFolderName="big"; // 大きいファイルのフォルダ
input string InpSmallFolderName="small"; // 小さいファイルのフォルダ
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数 |
//+------------------------------------------------------------------+
void OnStart()
{
string file_name; // ファイル名を格納する変数
string filter="*.csv"; // ファイル検索フィルタ
ulong file_size=0; // バイト単位のファイルサイズ
int size=0; // ファイル数
//--- 操作するファイルへのパスを出力する
PrintFormat("Working in %s\\Files\\ folder",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("Failed to open %s file, Error code = %d",file_name,GetLastError());
continue;
}
//--- ファイルサイズを出力する
PrintFormat("Size of %s file is equal to %d bytes",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 is moved",file_name);
else
PrintFormat("Error, code = %d",GetLastError());
}
while(FileFindNext(search_handle,file_name));
//--- 検索ハンドルを閉じる
FileFindClose(search_handle);
}
else
Print("Files not found!");
}
|