como apagar arquivos anteriores a data de hoje
Moderador: Moderadores
como apagar arquivos anteriores a data de hoje
ola pessoal, gostaria de saber se tem como apagar determinados arquivos com datas anteriores a data de hoje, encontrei varios exemplos para apagar arquivos mas sem determinar uma condição.
obrigado.
xHarbour.
obrigado.
xHarbour.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
como apagar arquivos anteriores a data de hoje
Olá Porter,
Nos dê mais informações do que leva você a precisar disso. Veja que é uma coisa muito perigosa, e acrescento sinistra.
Porém, esclareça as seguintes questões por exemplo:
É perfeitamente possível fazer o que você quer. Mas pessoalmente gostaria de ser convencido da razão disso.
Nos dê mais informações do que leva você a precisar disso. Veja que é uma coisa muito perigosa, e acrescento sinistra.
Porém, esclareça as seguintes questões por exemplo:
É muito amplo isso. Quais são exatamente esses determinados arquivos?porter escreveu:como apagar determinados arquivos
A data anterior a hoje é referente a que: data da última alteração, ou data de criação do arquivo?porter escreveu:com datas anteriores a data de hoje
É perfeitamente possível fazer o que você quer. Mas pessoalmente gostaria de ser convencido da razão disso.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
como apagar arquivos anteriores a data de hoje
Olá Jairo, tem uma pasta, que guardo varios arquivos para relatorios com extensao txt para ser impresso com o W32PRN, eu apenas nao quero deixar acumular arquivos, deixando apenas os relatorios gerados na data de hoje e os anteriores a data de hoje serem deletados. A data que eu me refiro e a data da geracao do arquivo.txt
obrigado.
obrigado.
como apagar arquivos anteriores a data de hoje
Porter
vc pode usar o comando FileDate()
vc pode usar o comando FileDate()
Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
como apagar arquivos anteriores a data de hoje
Olá Pessoal,
Porter, veja o exemplo abaixo. Note que está usando a CLASSE FileInfo. Caso sirva, você tem que colocar essa classe em algum .PRG seu:
Não testei, mas acho que FileDate() como outras funções nativas retornam a data de modificação, não de criação.Daniel escreveu:vc pode usar o comando FileDate()
Porter, veja o exemplo abaixo. Note que está usando a CLASSE FileInfo. Caso sirva, você tem que colocar essa classe em algum .PRG seu:
Código: Selecionar todos
Function Main()
Local x, aFiles, cFile, aFileInfo, oFileInfo, dDataHoje:=Date(), cPastaFiles
SET DATE BRIT
SET CENTURY ON
cPastaFiles := "C:\MinhaPasta\MinhaSubPasta\" // coloque aqui o caminho da pasta...
aFiles := Directory( cPastaFiles + "*.TXT" ) // pasta e tipo de arquivo...
For x=1 To Len( aFiles )
Clear Screen
cFile := cPastaFiles + "\" + aFiles[ x, 1 ] // caminho e nome do arquivo...
oFileInfo := FileInfo():new( cFile ) // envia a Classe FileInfo...
?
? "Nome do arquivo............=> ", oFileInfo:fileName
? "Tamanho....................=> ", oFileInfo:fileSize
? "Atributos..................=> ", oFileInfo:fileAttr
?
? "Data da criação............=> ", oFileInfo:createDate
? "Hora da criação............=> ", oFileInfo:createTime
?
? "Data da última alteração...=> ", aFiles[ x, 3 ]
? "Data da última alteração...=> ", aFiles[ x, 4 ]
?
/*
Cuidado. Descomente e/ou altere aqui por sua conta e risco...
*/
If oFileInfo:createDate < dDataHoje
If Alert( "Apagar o arquivo:;;" + cFile + "?;;Pressione ESC para encerrar...", { "Nao", "Sim" } ) = 2
//FErase( cFile )
EndIf
If LastKey() = 27
Return Nil
EndIf
EndIf
Next
Return Nil
/*
CLASS FileInfo
*/
#include "hbclass.ch"
#include "error.ch"
CLASS FileInfo
PROTECTED:
DATA cFileName INIT ""
DATA aInfo INIT { "", 0, CtoD(""), 0, CtoD(""), 0 }
METHOD getInfo
EXPORTED:
METHOD init
ACCESS fileName INLINE ::cFileName
ASSIGN fileName(c) INLINE ::getInfo(c)
ACCESS fileAttr INLINE ::aInfo[1]
ACCESS fileSize INLINE ::aInfo[2]
ACCESS createDate INLINE ::aInfo[3]
ACCESS createTime INLINE TString( ::aInfo[4] )
ACCESS changeDate INLINE ::aInfo[5]
ACCESS changeTime INLINE TString( ::aInfo[6] )
ENDCLASS
METHOD init( cFileName ) CLASS FileInfo
IF Valtype( cFileName ) == "C"
::getInfo( cFileName )
ENDIF
RETURN self
METHOD getInfo( cFileName ) CLASS FileInfo
IF .NOT. File( cFileName )
RETURN ::error( "File not found" , ;
::className(), "getInfo" , EG_ARG, {cFileName} )
ENDIF
::cFileName := cFileName
FileStats( cFileName, @::aInfo[1], ;
@::aInfo[2], ;
@::aInfo[3], ;
@::aInfo[4], ;
@::aInfo[5], ;
@::aInfo[6] )
RETURN selfAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
como apagar arquivos anteriores a data de hoje
Olá Porter;
Se entendi,
Tenho algo parecido, ou seja deixo em uma pasta temporária apenas arquivos gerados no dia, faço assim:
Tenho um arquivo chamado ATUALIZA.DBF que grava a data da última execução do aplicativo.
No início do main()
e na saída do sistema
Não esquecer dos tratamentos devidos (localização do arquivo, rede, etc)
Vander
Se entendi,
Tenho algo parecido, ou seja deixo em uma pasta temporária apenas arquivos gerados no dia, faço assim:
Tenho um arquivo chamado ATUALIZA.DBF que grava a data da última execução do aplicativo.
No início do main()
Código: Selecionar todos
USE ATUALIZA // arq. de controle da última execução
IF VLN00 < DATE() // VLN00 = campo date (gravo este campo na saída do sistema)
AEVAL(DIRECTORY("C:\TEMP2\*.DBF"),{|aFile| FErase("C:\TEMP2\"+aFile[1])})
ENDIF
Código: Selecionar todos
USE ATUALIZA // arq. de controle da última execução
REPLACE VLN00 WITH DATE()
CLOSE DATABASE
Vander
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
como apagar arquivos anteriores a data de hoje
Amiguinhos,
Segue minha dica mais didatica possivel:
No primeiro momento o ADIR() retorno o numero de arquivo da extensão passada. Critico se retornou uma contagem, declaro um vetor com o tamanho de itens contados, e com a mesma função preencho o vetor passando-o como parâmetro.
A laço FOR..NEXT fará outros procedimentos a meu mando.
O Jairo Maia te apresentou a função Directory(), que retorna um vetor onde uma das colunas tem as datas do arquivo, bastará percorrer o vetor 1 criticando o vetor 3 ou 4.
O Vander te apresentou AEVAL(), que avalia vetores e que recebeu um codeblock para analisar, mas este mesmo codeblock pode receber um terceiro parâmetro para critica.
Os dois métodos são avançados ao meu ver.
Consulte os parâmetros e retornos em ClipX.
Segue minha dica mais didatica possivel:
Código: Selecionar todos
cExtensao := "XML"
CONTADOR := ADIR( "*."+cExtensao )
IF CONTADOR != 0
DECLARE TXT_NOMES[ CONTADOR ]
ADIR( "*."+cExtensao, TXT_NOMES )
FOR CONTADOR := 1 TO LEN( TXT_NOMES )
//
...faço alguma coisa com o arquivo
cFile := TXT_NOMES[CONTADOR]
NEXT
ENDIF
A laço FOR..NEXT fará outros procedimentos a meu mando.
O Jairo Maia te apresentou a função Directory(), que retorna um vetor onde uma das colunas tem as datas do arquivo, bastará percorrer o vetor 1 criticando o vetor 3 ou 4.
O Vander te apresentou AEVAL(), que avalia vetores e que recebeu um codeblock para analisar, mas este mesmo codeblock pode receber um terceiro parâmetro para critica.
Os dois métodos são avançados ao meu ver.
Consulte os parâmetros e retornos em ClipX.
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.
como apagar arquivos anteriores a data de hoje
Se eu entendi e...
Se estiver errado podem corrigir por favor.
Não testei.
Obs.: O vetor da função Directory no primeiro elemento, nome do arquivo não considera o path, tem que informar se for apagar em uma pasta especifica.
ExcluiArq("*.TXT")
Se estiver errado podem corrigir por favor.
Não testei.
Obs.: O vetor da função Directory no primeiro elemento, nome do arquivo não considera o path, tem que informar se for apagar em uma pasta especifica.
ExcluiArq("*.TXT")
Código: Selecionar todos
FUNCTION ExcluiArq(cArq, cDir)
LOCAL aDir, I
hb_Default(@cArq, "*.*")
hb_Default(@cDir, hb_DirBase()) //pasta onde o executável está rodando por padrão.
aDir := Directory(cArq)
IF Len(aDir) > 0
FOR I:=1 TO Len(aDir)
IF (DTOS(aDir[I,3]) < DTOS(Date()))
fErase(cDir+aDir[I,1])
ENDIF
NEXT
ENDIF
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
como apagar arquivos anteriores a data de hoje
Tem essa outra função que eu uso.
LimparTemp(hb_DirBase()+"*.TXT", 1)
LimparTemp(hb_DirBase()+"*.TXT", 1)
Código: Selecionar todos
FUNCTION LimparTemp(cArq, nDias)
LOCAL cFile
hb_Default(@nDias, 10)
cFile := FileSeek(cArq)
DO WHILE !Empty(cFile)
IF FileDate() <= Date() - nDias
IF hb_FileExists(cFile)
FileDelete(cFile)
ENDIF
ENDIF
cFile := FileSeek()
ENDDO
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
como apagar arquivos anteriores a data de hoje
Olá Pessoal,
Se pela data de alteração não fizer diferença, concordo que o autor do tópico pode usar uma das que foi apresentada pelos demais colegas, por ser mais simples de entender e usar.
Editado:
Uma correção... Na linha em meu exemplo onde coloquei:Precisa tirar essa barra que está a mais e impede o exemplo de funcionar. Tem que ser assim:
Também onde coloquei:
Na verdade a última linha é a hora da última alteração:
Jairo Maia escreveu:A data anterior a hoje é referente a que: data da última alteração, ou data de criação do arquivo?
Todas as funções apresentadas pelos colegas são simples e de fácil entendimento. Porém, optei por usar a Classe FileInfo, que está no exemplo que postei, porque o autor do tópico disse preferir fazer a checagem pela data de CRIAÇÃO do arquivo. Os exemplos dos colegas retornam apenas a data da última alteração.porter escreveu:A data que eu me refiro e a data da geracao do arquivo.txt
Se pela data de alteração não fizer diferença, concordo que o autor do tópico pode usar uma das que foi apresentada pelos demais colegas, por ser mais simples de entender e usar.
Editado:
Uma correção... Na linha em meu exemplo onde coloquei:
Código: Selecionar todos
cFile := cPastaFiles + "\" + aFiles[ x, 1 ] // caminho e nome do arquivo...Código: Selecionar todos
cFile := cPastaFiles + aFiles[ x, 1 ] // caminho e nome do arquivo...Código: Selecionar todos
? "Data da última alteração...=> ", aFiles[ x, 3 ]
? "Data da última alteração...=> ", aFiles[ x, 4 ]Código: Selecionar todos
? "Data da última alteração...=> ", aFiles[ x, 3 ]
? "Hora da última alteração...=> ", aFiles[ x, 4 ]Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
como apagar arquivos anteriores a data de hoje
Gostei Jairo!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
como apagar arquivos anteriores a data de hoje
Amiguinhos,
Realmente, as funções ADIR() e Directory() são simples no quesito quantidade de informação e uma classe nova pode trazer mais dados importantes que as padrão não trazem....Porém, optei por usar a Classe FileInfo, que está no exemplo que postei, porque o autor do tópico disse preferir fazer a checagem pela data de CRIAÇÃO do arquivo. Os exemplos dos colegas retornam apenas a data da última alteração.
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.
como apagar arquivos anteriores a data de hoje
ola pessoal, optei por usar a rotina que o colega Jairo Maia passou, muito obrigado pela atenção de todos, não apenas resolvi meu problema, mas aprendi bastante tambem.
obrigado.
obrigado.
como apagar arquivos anteriores a data de hoje
Prezados,
Voltando ao assunto, tem alguma função que me retorne a data de criação do diretório, não a de atualização.
Voltando ao assunto, tem alguma função que me retorne a data de criação do diretório, não a de atualização.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
como apagar arquivos anteriores a data de hoje
Já foi resolvido, mas acrescentar minha opinião:
ë até melhor a data de alteração, sinal de que realmente não usa mais.
Eu uso o bom e velho Directory() e limito os arquivos a 4 horas de "idade".
Para temporários, uso a pasta temporária do Windows, porque arquivo local é muito mais rápido do que na rede.
De quebra, a rotina acaba fazendo uma limpeza dessa pasta.
Foi bom pro meu servidor: o Windows tem limite de arquivos, e já tive problemas com a pasta temp.
ë até melhor a data de alteração, sinal de que realmente não usa mais.
Eu uso o bom e velho Directory() e limito os arquivos a 4 horas de "idade".
Para temporários, uso a pasta temporária do Windows, porque arquivo local é muito mais rápido do que na rede.
De quebra, a rotina acaba fazendo uma limpeza dessa pasta.
Foi bom pro meu servidor: o Windows tem limite de arquivos, e já tive problemas com a pasta temp.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/

