//+------------------------------------------------------------------+
//| Demo_FolderClean.mq5 |
//| Copyright 2011, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
//--- описание
#property description "Скрипт показывает пример использования FolderClean()."
#property description "Сначала создаются файлы в указанной папке с помощью функции FileOpen()."
#property description "Затем перед удалением файлов выводится предупреждение MessageBox()."
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input string foldername="demo_folder"; // создаем папку в MQL4/Files/
input int files=5; // сколько файлов создадим и удалим
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string name="testfile";
//--- сначала откроем или создадим файлы в папке данных нашего терминала
for(int N=0;N<files;N++)
{
//--- соберем имя файла в виде 'demo_folder\testfileN.txt'
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- открываем файл с флагом на запись, в этом случае папка 'demo_folder' будет создана автоматически
int handle=FileOpen(filemane,FILE_WRITE);
//--- выясним, насколько успешно отработала функция FileOpen()
if(handle==INVALID_HANDLE)
{
PrintFormat("Не удалось создать файл %s. Код ошибки ",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("Файл %s успешно открыт",filemane);
//--- открытый файл нам больше не нужен, обязательно закрываем
FileClose(handle);
}
}
//--- проверим, сколько файлов в папке
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("Всего в папке %s найдено %d файлов",foldername,k);
//--- выведем диалоговое окно и спросим пользователя
int choice=MessageBox(StringFormat("Вы собираетесь удалить из папки %s %d файлов, продолжить?",foldername,k),
"Удаление файлов из папки",
MB_YESNO|MB_ICONQUESTION); // будут две кнопки - "Yes" и "No"
ResetLastError();
//--- выполним действия в зависимости от выбранного варианта
if(choice==IDYES)
{
//--- начинаем удалять
PrintFormat("Попытка удалить все файлы из папки %s",foldername);
if(FolderClean(foldername,0))
PrintFormat("Файлы успешно удалены, в папке %s осталось %d файлов",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else
PrintFormat("Не удалось удалить файлы из папки %s. Код ошибки %d",foldername,GetLastError());
}
else
PrintFormat("Удаление отменено");
//---
}
//+------------------------------------------------------------------+
//| возвращает количество файлов в указанной папке |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//---
handle=FileFindFirst(path,filename,flag);
//--- если хотя бы один файл найден, ищем остальные
if(handle!=INVALID_HANDLE)
{
//--- выведем имя файла
PrintFormat("найден файл %s",filename);
//--- увеличим счетчик найденный файлов/папок
count++;
//--- начинаем перебор всех файлов/папок
while(FileFindNext(handle,filename))
{
PrintFormat("найден файл %s",filename);
count++;
}
//--- обязательно закрываем хендл поиска по окончании
FileFindClose(handle);
}
else // хендл получить не удалось
{
PrintFormat("Не удалось провести поиск файлов в папке %s",path);
}
//--- вернем результат
return count;
} |