//+------------------------------------------------------------------+ //| Demo_FolderClean.mq5 | //| Copyright 2000-2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2000-2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //--- la description #property description "Le script montre un exemple de l'utilisation FolderClean()." #property description "D'abord on crée les fichiers dans le dossier indiqué à l'aide de la fonction FileOpen()." #property description "Puis, avant la suppression des fichiers on déduit l'avertissement MessageBox()." //--- Nous montrons la fenêtre des paramètres d'entrée au lancement du script #property script_show_inputs //--- les paramètres d'entrée input string foldername="demo_folder"; // créons le dossier dans MQL5/Files/ input int files=5; // Combien de fichiers nous créons et nous supprimons //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string name="testfile"; //--- d'abord nous ouvrirons ou nous créons les fichiers dans le dossier des données de notre terminal for(int N=0;N<files;N++) { //--- collectons le nom du fichier comme 'demo_folder\testfileN.txt' string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N); //--- ouvrons le fichier avec le drapeau sur l'enregistrement, dans ce cas le dossier ' demo_folder ' sera automatiquement créé int handle=FileOpen(filemane,FILE_WRITE); //--- connaissons, autant la fonction a été accompli avec succès FileOpen() if(handle==INVALID_HANDLE) { PrintFormat("On n'a pas réussi à créer le fichier %s. Le code de l'erreur ",filemane,GetLastError()); ResetLastError(); } else { PrintFormat("Le fichier %s est ouvert avec succès",filemane); //--- nous n'avons plus besoin du fichier ouvert, il faut le fermer obligatoirement FileClose(handle); } } //---vérifions combien de fichiers sont dans le dossier int k=FilesInFolder(foldername+"\\*.*",0); PrintFormat("Au total%s on a trouvé %d fichiers",foldername,k); //--- déduisons la boîte de dialogue et demanderons à l'utilisateur int choice=MessageBox(StringFormat("Vous allez supprimer %s %d fichiers du dossier, continuer?",foldername,k), "La suppression des fichiers du dossier", MB_YESNO|MB_ICONQUESTION); // il y aura deux boutons - "Yes" et "No" ResetLastError(); //--- accomplirons les actions en fonction de la variante choisie if(choice==IDYES) { //--- commençons à supprimer PrintFormat("La tentative de supprimer tous les fichiers du dossier %s",foldername); if(FolderClean(foldername,0)) PrintFormat("Les fichiers sont supprimés avec succès, %s fichiers %d sont réstés dans le dossier", foldername, FilesInFolder(foldername+"\\*.*",0)); else PrintFormat("On n'a pas réussi à supprimer les fichiers du dossier %s. Le code de l'erreur %d",foldername,GetLastError()); } else PrintFormat("La suppression est annulée"); //--- } //+------------------------------------------------------------------+ //| rend le nombre de fichiers dans le dossier | //+------------------------------------------------------------------+ int FilesInFolder(string path,int flag) { int count=0; long handle; string filename; //--- handle=FileFindFirst(path,filename,flag); //--- Si quand même un fichier est trouvé, nous cherchons les autres if(handle!=INVALID_HANDLE) { //--- déduisons le nom du fichier PrintFormat("le fichier %s est trouvé",filename); //--- accroissons le compteur des fichiers/dossiers trouvés count++; //--- commençons le balayage de tous les fichiers/dossiers while(FileFindNext(handle,filename)) { PrintFormat("le fichier %s a été trouvé",filename); count++; } //--- fermons obligatoirement le handle de la recherche à la fin FileFindClose(handle); } else // on n'a pas réussi à recevoir le handle { PrintFormat("On n'a pas réussi à faire la recherche des fichiers dans le dossier %s",path); } //--- rendons le résultat return count; } |