FolderDelete

A função remove o diretório especificado. Se a pasta não estiver vazia, então ele não pode ser removida.

bool  FolderDelete(
   string  folder_name,       // String com o nome da pasta para deletar
   int     common_flag=0      // escopo
   );

Parâmetros

folder_name

[in] O nome do diretório que você deseja excluir. Contém o caminho completo para a pasta.

common_flag=0

[in] Bandeira determinando a localização do diretório. Se common_flag=FILE_COMMON, então o diretório está na pasta compartilhada para todos os terminais do cliente \Terminal\Common\Files. Caso contrário, o diretório está em uma pasta local (MQL5\Files ou MQL5\Tester\Files no caso de testes).

Valor do Retorno

Retorna true se bem sucedido, caso contrário false.

Observação

Por razões de segurança, o trabalho com arquivos é estritamente controlada na língua MQL5. Arquivos com que as operações de arquivo são conduzidas usando os meios MQL5, não podem estar fora da caixa de proteção do arquivo.

Se o diretório contiver pelo menos um arquivo e / ou subdiretório, então este diretório não pode ser excluído, ele deve ser limpo primeiro. FolderClean() é usado para limpar a pasta de todos os seus arquivos ou sub-pastas.

Exemplo:

//+------------------------------------------------------------------+
//|                                            Demo_FolderDelete.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 roteiro mostra um exemplo de uso FolderDelete()."
#property description "Primeiro duas pastas são criados, um deles está vazia, a segunda contém um arquivo."
#property description "Quando se tenta excluir uma pasta não-vazia, será retornado um erro e um aviso é mostrado."
 
//--- Mostrar a caixa de diálogo de parâmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parâmetros de entrada
input string   firstFolder="empty";    // Uma pasta vazia
input string   secondFolder="nonempty";// A pasta, em que um arquivo será criado
string filename="delete_me.txt";       // O nome do arquivo que será criado na pasta secondFolder
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Escreva o manipulador de arquivo aqui
   int handle;
//--- Descubra em qual pasta estamos trabalhando
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Uma mensagem de depuração  
   PrintFormat("working_folder=%s",working_folder);
//--- Tentando criar uma pasta vazia em relação ao caminho MQL5\Files
   if(FolderCreate(firstFolder,0)) // 0 (zero) significa que estamos trabalhando na pasta local do terminal
     {
      //--- Insira o caminho completo para a pasta criada
      PrintFormat("Pasta %s foi criada",working_folder+"\\"+firstFolder);
      //--- Redefine o código de erro
      ResetLastError();
     }
   else
      PrintFormat("Falha ao criar a pasta %s. Código de erro %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- Agora, crie uma pasta não-vazia utilizando a função FileOpen()
   string filepath=secondFolder+"\\"+filename;  // Formar caminho do arquivo que desejamos abrir para escrever numa pasta inexistente
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE neste caso é obrigatória, consulte Ajuda para FileOpen
   if(handle!=INVALID_HANDLE)
      PrintFormat("Arquivo %s foi aberto para leitura",working_folder+"\\"+filepath);
   else
      PrintFormat("Falha para criar arquivo %s na pasta %s. Código de erro=",filename,secondFolderGetLastError());
 
   Comment(StringFormat("Preparar para deletar pastas %s e %s"firstFoldersecondFolder));
//--- Uma pequena pausa de 5 segundos para ler uma mensagem no gráfico
   Sleep(5000); // Sleep() não pode ser utilizado em indicadores!
 
//--- Mostrar uma caixa de diálogo e pedir ao usuário
   int choice=MessageBox(StringFormat("Você quer apagar pastas %s e %s?"firstFoldersecondFolder),
                         "Deletando pastas",
                         MB_YESNO|MB_ICONQUESTION); //  Dois botões - "Yes" e "No"
 
//--- Executar uma ação dependendo da variante selecionada
   if(choice==IDYES)
     {
      //--- Excluir no gráfico o formulário de comentário
      Comment("");
      //--- Adicione uma mensagem dentro do jornal "Experts"
      PrintFormat("Tentando deletar pastas %s e %s",firstFoldersecondFolder);
      ResetLastError();
      //--- Deletar uma pasta vazia
      if(FolderDelete(firstFolder))
         //--- A seguinte mensagem deve aparecer uma vez que a pasta está vazia
         PrintFormat("Pasta %s foi deletada com sucesso",firstFolder);
      else
         PrintFormat("Falha para deletar pasta %s. Código de erro=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- Deletar a pasta que contém um arquivo
      if(FolderDelete(secondFolder))
         PrintFormat("Pasta %s foi deletada com sucesso"secondFolder);
      else
         //--- A seguinte mensagem deve aparecer uma vez que a pasta contém um arquivo
         PrintFormat("Falha para deletar pasta %s. Código de erro=%d"secondFolderGetLastError());
     }
   else
      Print("Exclusão cancelada");
//---
  }

Também Veja

FileOpen(), FolderClean(), FileMove()