FolderClean

Entfernt alle Dateien im angegebenen Ordner.

bool  FolderClean(
   string  folder_name,       // Zeile mit dem Ordnernamen 
   int     common_flag=0      // Geltungsbereich
   );

Parameter

folder_name

[in]  Name des Verzeichnisses, in dem alle Dateien entfernt werden müssen. Enthält den gesamten Pfad zum Ordner.

common_flag=0

[in] Flagge, die die Lage des Verzeichnisses bestimmt. Wenn common_flag=FILE_COMMON ist, befindet sich das Verzeichnis im Gesamtfolder aller Client-Terminals \Terminal\Common\Files. Anderenfalls befindet sich das Verzeichnis im lokalen Ordner (MQL5\files oder MQL5\tester\files beim Testen).

Rückgabewert

Gibt true im Erfolgsfall zurück, anderenfalls false.

Hinweis

Aus Sicherheitsgründen ist die Arbeit mit Dateien in MQL5 streng gesteuert. Dateien, mit denen Datei-Operationen mittels MQL5 durchgeführt werden, können nicht außerhalb der Datei-Sandbox sein.

Verwenden Sie diese Funktion vorsichtig, denn alle Dateien und verschachtelte Unterverzeichnisse werden unwiederbringlich entfernt.

Beispiel:

//+------------------------------------------------------------------+
//|                                             Demo_FolderClean.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                     https://team.metaquotes.ru/email/view/599588 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://team.metaquotes.ru/email/view/599588"
#property version   "1.00"
//--- Beschreibung
#property description "Das Skript zeigt ein Beispiel der Funktion FolderClean()."
#property description "Zuerst erstellen Sie Dateien in einem bestimmten Ordner mit FileOpen()."
#property description "Dann, bevor Löschung der Dateien, erscheint die Warnung MessageBox()."
 
//--- Beim Starten des Scripts zeigen Sie den Fenster mit den Eingabeparametern an
#property script_show_inputs
//--- Eingabeparameter
input string   foldername="demo_folder";  // Erstellen wir einen Ordner in MQL5/Files/
input int      files=5;                   // Wie viele Dateien erstellen und löschen Sie
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//--- Zuerst erstellen oder öffnen Sie Dateien im Datenordner des Terminals
   for(int N=0;N<files;N++)
     {
      //--- Dateiname in der Form von 'demo_folder\testfileN.txt'
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- Öffnen Sie eine Date mot dem Flag zu schreiben, in diesem Fall wird Ordner 'demo_folder' automatisch erstellt
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- Finden Sie, ob FileOpen() erfolgreich war
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("Datei %s konnte nicht erstellt werden. Fehlercode ",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("Datei %s wurde erfolgreich geöffnet",filemane);
         //--- Die offene Datei brauchen Sie nicht mehr, so schließen Sie sie
         FileClose(handle);
        }
     }
 
//--- Überprüfen Sie, wie viele Dateien der Ordner hat
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("%d Dateien im Ordner %s gefunden",foldername,k);
 
//--- Im Dialogfenster fragen Sie den Benutzer
   int choice=MessageBox(StringFormat("Sie sind dabei, %d Dateien aus dem Ordner %s zu löschen, fortsetzen?",foldername,k),
                         "Löschung der Dateien aus dem Ordner",
                         MB_YESNO|MB_ICONQUESTION); //  Zwei Schaltflächen - "Yes" und "No"
   ResetLastError();
 
//--- Aktionen je nach der gewählten Option
   if(choice==IDYES)
     {
      //--- Sie beginnen zu löschen
      PrintFormat("Der Versuch, alle Dateien aus dem Ordner %s zu löschen",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("Die Dateien wurden erfolgreich gelöscht, %d Dateien bleiben im Ordner %s",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("Dateien konnten nicht aus dem Ordner %s gelöscht werden. Fehlercode %d",foldername,GetLastError());
     }
   else
      PrintFormat("Löschung wurde abgebrochen");
//---
  }
//+------------------------------------------------------------------+
//| Gibt die Anzahl der Dateien im Ordner zurück                     |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- Wenn eine Datei gefunden wird, dann suchen Sie nach anderen
   if(handle!=INVALID_HANDLE)
     {
      //--- Dateinamen zeigen
      PrintFormat("File %s wurde gefunden",filename);
      //--- Erhöhen Sie den Zähler der gefundenen Dateien/Ordner
      count++;
      //--- Beginnen Sie suchen nach allen Dateien/Ordnern
      while(FileFindNext(handle,filename))
        {
         PrintFormat("Datei %s wurde gefunden",filename);
         count++;
        }
      //--- Vergessen Sie nicht die Suche Handle zu schließen
      FileFindClose(handle);
     }
   else // Handle konnte nicht erhalten werden
     {
      PrintFormat("Suche nach Dateien im Ordner %s fehlgeschlagen",path);
     }
//--- Ergebnis zurückgeben
   return count;
  }

Sehen Sie auch

FileFindFirst, FileFindNext, FileFindClose