Como apagar arquivos de um servidor FTP via AdvPL

Introdução

Em muitos projetos que envolvem integração entre o Protheus e sistemas externos, é comum precisar manipular arquivos em servidores FTP — seja para baixar, enviar ou até mesmo excluir arquivos remotamente.

E sim, é totalmente possível fazer isso via AdvPL. No artigo de hoje, vamos mostrar como apagar arquivos de um servidor FTP diretamente pelo código, utilizando funções nativas da linguagem.

Essa solução é útil, por exemplo, para rotinas automáticas de integração, em que os arquivos processados precisam ser removidos para evitar duplicidades ou sobrecarga no servidor.

Entendendo a lógica da exclusão via FTP

A ideia geral é simples:

  1. Separar o caminho e o nome do arquivo;
  2. Conectar ao servidor FTP;
  3. Navegar até o diretório correto;
  4. Excluir o arquivo desejado;
  5. E por fim, desconectar com segurança.

Com base nessa sequência, foi criada uma função chamada zDelFTP(), que automatiza esse processo de ponta a ponta.

Etapas detalhadas

1. Separando o caminho do arquivo

A primeira etapa é utilizar a função SplitPath(), que divide o caminho completo em partes (drive, diretório, nome e extensão).
Isso facilita a manipulação das pastas antes de executar o comando de exclusão.

2. Conectando ao servidor FTP

Em seguida, é feita a conexão utilizando FTPConnect(), informando o servidor, porta, usuário e senha.
Uma dica importante: a senha está armazenada com Decode64(), para evitar que fique em texto puro no código.

3. Navegando pelas pastas

Depois da conexão, o código usa a função Separa() para quebrar o caminho em um array de pastas.
Com isso, um loop percorre cada pasta, mudando o diretório ativo com FTPDirChange() até chegar na pasta onde o arquivo realmente está.

4. Apagando o arquivo

Chegando na pasta certa, é hora de excluir o arquivo com FTPErase() — que remove o arquivo indicado do servidor.

5. Encerrando a conexão

Para finalizar, a função FTPDisconnect() garante que a conexão seja encerrada corretamente, liberando os recursos de rede.

Exemplo de código completo

//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} zDelFTP
Função para apagar o arquivo dentro do FTP
@type user function
@author Atilio
@since 20/06/2025
@param cArquiFTP, Caminho do arquivo no FTP
@example u_zDelFTP("\2025-02\nf_entradas\mp\arquivo.txt")
/*/
 
User Function zDelFTP(cArquiFTP)
    Local aArea       := FWGetArea()
    Local lContinua   := .T.
    Local cFTPUrl     := "ftp.milenioapp.com"
    Local cFTPUser    := "protheus@milenioapp.com"
    Local cFTPPass    := Decode64("bTc5KnVxeG1NNC1V")
    Local nFTPPort    := 21
    Local cDrive      := ""
    Local cDiretorio  := ""
    Local cNome       := ""
    Local cExtensao   := ""
    Local aPastas     := {}
    Local nAtual      := 0
    Default cArquiFTP := ""
 
    If ! Empty(cArquiFTP)
        SplitPath(cArquiFTP, @cDrive, @cDiretorio, @cNome, @cExtensao)
        lContinua := FTPConnect(cFTPUrl, nFTPPort, cFTPUser, cFTPPass)
 
        If lContinua
            aPastas := Separa(cDiretorio, "\")
            For nAtual := 1 To Len(aPastas)
                If ! Empty(aPastas[nAtual])
                    lContinua := lContinua .And. FTPDirChange(aPastas[nAtual])
                    If ! lContinua
                        Exit
                    EndIf
                EndIf
            Next
 
            If lContinua
                FTPErase(cNome + cExtensao)
            EndIf
        EndIf
 
        FTPDisconnect()
    EndIf
 
    FWRestArea(aArea)
Return

Atenção aos detalhes em servidores Linux

Um ponto importante: em servidores Linux, os nomes de pastas e arquivos são sensíveis a maiúsculas e minúsculas.
Ou seja, “Arquivo.txt” é diferente de “arquivo.txt”.
Certifique-se de passar o caminho exatamente como está configurado no servidor, ou o comando poderá falhar.

Conclusão

Excluir arquivos de um servidor FTP via AdvPL é uma tarefa simples, mas que exige cuidado com detalhes como caminhos, permissões e autenticação.
Com a função zDelFTP(), você consegue automatizar a limpeza de diretórios FTP, mantendo suas rotinas de integração mais seguras e organizadas.

Se você quiser entender como aplicar isso no seu ambiente Protheus, ou integrar esse processo com rotinas automatizadas de integração, entre em contato com a Geeker Company — nossa equipe pode te ajudar a configurar tudo de forma prática e segura.

Fale conosco

Se você quer implementar essa rotina de exclusão automática no seu ambiente Protheus, integrar com outros sistemas ou otimizar seus processos de integração, fale com a Geeker Company. Nossa equipe é especialista em soluções personalizadas em AdvPL, integrações FTP e automação de rotinas para deixar seu sistema mais seguro, leve e eficiente.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

{{brizy_dc_image_alt entityId=
Como corrigir a rejeição 1155 no Protheus (sem travar seu faturamento)
Se você trabalha com faturamento no Protheus, sabe como é: está tudo certo, pedido pronto, nota gerada… e quando vai transmitir, toma uma rejeição do nada. E não é qualquer rejeição.É aquela que trava tudo: “1155 – Data de previsão de entrega anterior ao permitido” E aí começa a correria. Neste artigo, vou te mostrar […]
{{brizy_dc_image_alt entityId=
Tendências para ERP no Brasil em 2026: o que sua empresa precisa fazer agora para não ficar para trás
2026 não é o futuro — já começou Se tem uma coisa que muitas empresas ainda não perceberam é que 2026 não está “chegando”. Ele já começou. E isso fica ainda mais claro quando falamos de ERP. O sistema que antes era visto como um simples “registrador de dados” virou, na prática, o coração da […]
{{brizy_dc_image_alt entityId=
Como validar informações do XML no Documento de Entrada do Protheus usando TOTVS Transmite
Quem trabalha com Protheus no dia a dia sabe que a entrada de notas fiscais pode virar um problema quando os valores digitados no documento não batem com as informações que vieram no XML. E isso acontece mais do que deveria. TES errada, imposto diferente, valor de mercadoria divergente… tudo isso pode gerar inconsistência contábil, […]
{{brizy_dc_image_alt entityId=
Protheus lento? Como melhorar a performance do Protheus em ambientes com muitos usuários
Quando o Protheus começa a ficar lento Existe um momento muito comum na vida de empresas que utilizam ERP. No começo, tudo funciona bem. O sistema responde rápido, as rotinas executam sem problemas e os usuários trabalham normalmente. Mas conforme a empresa cresce, algo começa a mudar. Mais usuários entram no sistema, mais processos passam […]