Excluir arquivos antigos
Moderador: Moderadores
Excluir arquivos antigos
Prezados Colegas
Preciso de uma função que me permitar excluir arquivos antigos.
Exemplo :
A função vai numa determinada pasta e exclui todos os arquivos com data inferior ou igual a 15/01/2007.
Desde já agradeço.
Marcelo
Preciso de uma função que me permitar excluir arquivos antigos.
Exemplo :
A função vai numa determinada pasta e exclui todos os arquivos com data inferior ou igual a 15/01/2007.
Desde já agradeço.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Re: Excluir arquivos antigos
Não sei se funciona, pois acabei de digitar:
Mas, ao invés de informar uma data limite, para tornar a função mais genérica, você poderia informar um bloco com uma regra que, no bloco que avalia a matriz, retornaria um valor lógico, permitindo ou não o apagamento.
[]'s
Maligno
http://www.buzinello.com/prg
Código: Selecionar todos
// Exemplo de uso
clear
? "Apagados: "+ LTrim(Str(DelFilesF("d:\x\*.com",CtoD("01/01/2000")))) + " arquivos"
?
// cSpec => nome do caminho com a especificação (ex: c:\tmp\*.bak)
// dLimit => data limite para manter os arquivos (se <=, será apagado)
//
function DelFilesF(cSpec,dLimit)
local cDir := Left(cSpec,RAt("\",cSpec))
local aDir := Directory(cSpec)
local nCnt := 0
AEval(aDir,{|aFile|if(aFile[3]<=dLimit, FErase(cDir+aFile[1],nCnt++), nil)})
return nCnt
[]'s
Maligno
http://www.buzinello.com/prg
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Faça uso da função DIRECTORY().
Ela retorna um array multidimensional contendo as colunas NOME(char), TAMANHO(char), DATA(data), TIME(char).
Com base neste array voce cria a critica para deleção com FERASE()
Faça uso da função DIRECTORY().
Ela retorna um array multidimensional contendo as colunas NOME(char), TAMANHO(char), DATA(data), TIME(char).
Com base neste array voce cria a critica para deleção com FERASE()
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Obrigado Maligno e Rochinha !
A função funcionou perfeitamente.
No inicio compilei do jeito que o Maligno postou mas não funcionou, foi só botar um SET DATE BRIT e pronto.
Na verdade eu já sabia como excluir, eu não estava sabendo fazer a critica dentro do bloco.
A linha no meu programa ficou resumida a isso :
AEVAL(DIRECTORY("\BR\NOTAS\*.ARJ"),{|AFILE|IF(AFILE[3]<=DATAPROC-10,FERASE(AFILE[1]),NIL)})
Pois pra mim é mais prático assim, porém considero a função completa do jeito do Maligno melhor pois é genérica e se aplica em qualquer caso.
Muito obrigado colegas !
Até logo.
Marcelo
A função funcionou perfeitamente.
No inicio compilei do jeito que o Maligno postou mas não funcionou, foi só botar um SET DATE BRIT e pronto.
Na verdade eu já sabia como excluir, eu não estava sabendo fazer a critica dentro do bloco.
A linha no meu programa ficou resumida a isso :
AEVAL(DIRECTORY("\BR\NOTAS\*.ARJ"),{|AFILE|IF(AFILE[3]<=DATAPROC-10,FERASE(AFILE[1]),NIL)})
Pois pra mim é mais prático assim, porém considero a função completa do jeito do Maligno melhor pois é genérica e se aplica em qualquer caso.
Muito obrigado colegas !
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho Clipper
Quando entrei no topico só tinha sua pergunta portante descarte a minha pois a do Maligno usa as mesmas funções e ja tá pronta.
Quando entrei no topico só tinha sua pergunta portante descarte a minha pois a do Maligno usa as mesmas funções e ja tá pronta.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Sabia que ia acabar esquecendo alguma coisa.Clipper escreveu:No inicio compilei do jeito que o Maligno postou mas não funcionou, foi só botar um SET DATE BRIT e pronto.
[]'s
Maligno
http://www.buzinello.com/prg
-:] Amigo marcelão hehhe , ñ entendi pq vc teve dificudades para criar algo desse tipo , a ñ seer que vc teria em mente uma solução " By rocinha,maligno masters clipper pró ultra advanced ", pois para apagar poderia fazer uma simples pesquisa assim como vc falou entre data e data conforme vai achando , zap e skip ! ñ entendi heheehheheeh mais ta valendo ! Grande abraço pra galera !
´o)
´o)
C:\Xharbour\Xdev\Fw\VSX
A questão é que eu queria apagar os arquivos do diretório, e isso é variável, num dia podem ser 20, no outro 25, no outro 10 e os nomes também são variaveis, ou seja, eu não sei de antemão quais são os arquivos, apenas sei que não quero os arquivos com mais de 10 dias de criados, não seria simplemente limpar um arquivo com ZAP, entendeu agora ?
Até logo.
Marcelo
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Acho que entendi sim, o que vc queria era uma coisa altomatica , rodando no sistema sem que vc esquente a cabeça em fiacar pesquisando e apagando o que deve ou ñ ser apagado ... seria isso ??
OBs: ñ estou fazendo nenhuma critica a vc , mesmo pq vc é um cara que sempre me ajuda , apenas fiz um comentario , pq achei um pouco estranho , desculpe se ofendi ! té ++
OBs: ñ estou fazendo nenhuma critica a vc , mesmo pq vc é um cara que sempre me ajuda , apenas fiz um comentario , pq achei um pouco estranho , desculpe se ofendi ! té ++
C:\Xharbour\Xdev\Fw\VSX
Não foi ofensa nenhuma, eu achei que você não tinha entendido mesmo.
É que eu já exluia os arquivos normalmente mas todos, e o cliente pediu que eu deixasse os arquivos dos últimos 10 dias e não estava sabendo incluir a critica dentro do CodeBlock.
Eu usava assim :
AEVAL(DIRECTORY("\BR\NOTAS\*.ARJ"),{|AFILE|FERASE(AFILE[1])})
E queria colocar a crítica dentro dessa mesma linha, mas não lembrava como fazer.
Até logo.
Marcelo
É que eu já exluia os arquivos normalmente mas todos, e o cliente pediu que eu deixasse os arquivos dos últimos 10 dias e não estava sabendo incluir a critica dentro do CodeBlock.
Eu usava assim :
AEVAL(DIRECTORY("\BR\NOTAS\*.ARJ"),{|AFILE|FERASE(AFILE[1])})
E queria colocar a crítica dentro dessa mesma linha, mas não lembrava como fazer.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Em tempo: ia comentar e acabei esquecendo. Ao informar em FErase() qual arquivo apagar, acho uma boa idéia acrescentar o path, como fiz no meu exemplo. Assim, você não precisará estar no mesmo diretório onde se encontram os arquivos. Algo como:Clipper escreveu:AEVAL(DIRECTORY("\BR\NOTAS\*.ARJ"),{|AFILE|IF(AFILE[3]<=DATAPROC-10,FERASE(AFILE[1]),NIL)})
Código: Selecionar todos
cDir := "\BR\NOTAS"
AEVAL(DIRECTORY(cDir+"*.ARJ"),{|AFILE|IF(AFILE[3]<=DATAPROC-10,FERASE(cDir+AFILE[1]),NIL)})Maligno
http://www.buzinello.com/prg


