//+------------------------------------------------------------------+
//| Demo_FolderClean.mq5 |
//| Copyright 2011, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//--- Descrição
#property description "O script mostra um exemplo de uso FolderClean()."
#property description "Primeiro, os arquivos são criados na pasta especificada utilizando a função FileOpen ()."
#property description "Então, antes que os arquivos sejam apagados, um aviso é mostrado usando MessageBox()."
//--- Mostrar caixa de diálogo de parâmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parâmetros de entrada
input string foldername="demo_folder"; // Criar uma pasta em MQL5/Files/
input int files=5; // O número de arquivos para criar e excluir
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar) |
//+------------------------------------------------------------------+
void OnStart()
{
string name="testfile";
//---Primeiro abrir ou criar arquivos na pasta de dados do terminal
for(int N=0;N<files;N++)
{
//--- O nome do arquivo no formato demo_pasta\testfileN.txt'
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- Abrir um arquivo com a bandeira para a escrita, neste caso, o 'demo_pasta' será criado automaticamente
int handle=FileOpen(filemane,FILE_WRITE);
//--- Descubra se a função FileOpen() foi bem sucedida
if(handle==INVALID_HANDLE)
{
PrintFormat("Falha para criar arquivo %s. Código de erro",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("Arquivo %s foi aberto com sucesso",filemane);
//--- O arquivo aberto não é mais necessário, então fechá-lo
FileClose(handle);
}
}
//--- Verifique o número de arquivos na pasta
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("Totalmente a pasta %s contém %d arquivos",foldername,k);
//--- Mostrar uma janela para perguntar ao usuário
int choice=MessageBox(StringFormat("Você vai apagar %d arquivos da pasta %s. Você quer continuar?",foldername,k),
"Excluindo arquivos da pasta",
MB_YESNO|MB_ICONQUESTION); // Dois botões - "Sim" e "Não"
ResetLastError();
//--- Executar uma ação dependendo da variante selecionada
if(choice==IDYES)
{
//--- Começar deletar arquivos
PrintFormat("Tentando deletar todos os arquivos da pasta %s",foldername);
if(FolderClean(foldername,0))
PrintFormat("Arquivos foram deletados com sucesso, %d arquivos que restaram na pasta %s",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else
PrintFormat("Falha ao deletar arquivos da pasta %s. Código de erro %d",foldername,GetLastError());
}
else
PrintFormat("Exclusão cancelada");
//---
}
//+------------------------------------------------------------------+
//| Retornar o número de arquivos na pasta especificada |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//---
handle=FileFindFirst(path,filename,flag);
//--- Se pelo menos um arquivo encontrado, procurar por mais arquivos
if(handle!=INVALID_HANDLE)
{
//--- Mostrar o nome do arquivo
PrintFormat("Arquivo %s encontrado",filename);
//--- Aumentar o contador de arquivos/pastas encontrados
count++;
//--- Iniciar a pesquisa em todos arquivos/pastas
while(FileFindNext(handle,filename))
{
PrintFormat("Arquivo %s encontrado",filename);
count++;
}
//--- Não se esqueça de fechar o manipulador de pesquisa após a conclusão
FileFindClose(handle);
}
else // Falha ao obter o manipulador
{
PrintFormat("Pesquisa nos arquivos na pasta %s falhou",path);
}
//--- Retorna o resultado
return count;
}
|