Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
766
Rating:
(29)
Veröffentlicht:
2016.06.20 13:22
Aktualisiert:
2016.11.22 07:34
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Das Skript sortiert alle CSV-Dateien im allgemeinen Ordner des Client-Terminals, um deren Größe zu ermitteln. Nachdem die Größe festgestellt wurde, wir der Wert mit dem "InpThresholdSize" Schwellwert verglichen und je nach Ergebnis wird die Datei in den Ordner "InpBigFolderName" oder "InpSmallFolderName" verschoben. So werden große und kleine Dateien auseinander sortiert.

Neben der FileSize() Funktion gibt es auch dieFileFindFirst(), die FileFindNext() und die FileFindClose() Funktionen im Skript um die Dateien zu sortieren und die FileMove() Funktion um sie zu erschieben.

Code:

//--- zeige das Fesnter mit den Eingabeparametern beim Aufruf des Skripts
#property script_show_inputs
Eingabeparameter:
input ulong  InpThresholdSize=20;        // Dateigräße Schwellwert in Kilobytes
input string InpBigFolderName="big";     // Ordner für große Dateien
input string InpSmallFolderName="small"; // Ordner für kleine Dateien
//+------------------------------------------------------------------+
//| Skript Programmstart Funktion                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string   file_name;      // Variable zum speichern von Dateinamen
   string   filter="*.csv"; // Filter zum Suchen der Dateien
   ulong    file_size=0;    // Dateigröße in Bytres
   int      size=0;         // Anzahl von Dateien
//--- Pfad der Datei ausgeben, mit der wir arbeiten
   PrintFormat("Arbeite im %s\\Files\\ Ordner",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- Such-Handle des allgemeinen Ordners aller Terminals holen
   long search_handle=FileFindFirst(filter,file_name,FILE_COMMON);
//--- prüfe, ob FileFindFirst() erfolgreich ausgeführt wurde
   if(search_handle!=INVALID_HANDLE)
     {
      //--- Dateien in der Schleife entsprechend ihrer Größe verschieben
      do
        {
         //--- Datei öffnen
         ResetLastError();
         int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON);
         if(file_handle!=INVALID_HANDLE)
           {
            //--- Dateigröße ermitteln
            file_size=FileSize(file_handle);
            //--- Datei schließen
            FileClose(file_handle);
           }
         else
           {
            PrintFormat("Fehler beim Öffnen der Datei %s, Fehlercode = %d",file_name,GetLastError());
            continue;
           }
         //--- Dateigröße ausgeben
         PrintFormat("Größe der Datei %s beträgt %d Bytes",file_name,file_size);
         //--- Pfad für das Verschieben der Datei definieren
         string path;
         if(file_size>InpThresholdSize*1024)
            path=InpBigFolderName+"//"+file_name;
         else
            path=InpSmallFolderName+"//"+file_name;
         //--- Datei verschieben
         ResetLastError();
         if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON))
            PrintFormat("%s Datei verschoben",file_name);
         else
            PrintFormat("Fehler, Code = %d",GetLastError());
        }
      while(FileFindNext(search_handle,file_name));
      //--- Such-Handle schließen
      FileFindClose(search_handle);
     }
   else
      Print("Dateien nicht gefunden!");
  }

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1633

Demo_FileReadDouble Demo_FileReadDouble

Der Indikator demonstriert ein Beispiel für die Verwendung der FileReadDouble() Funktion

Demo_FileWriteDouble Demo_FileWriteDouble

Das Skript demonstriert ein Beispiel für die Verwendung der FileWriteDouble() Funktion

Demo_FileTell Demo_FileTell

Das Skript demonstriert ein Beispiel für die Verwendung der FileTell() Funktion

Demo_FileWriteInteger Demo_FileWriteInteger

Das Skript demonstriert ein Beispiel für die Verwendung der FileWriteInteger() Funktion