jaumDoDelphi Postado Agosto 5, 2010 Denunciar Share Postado Agosto 5, 2010 Ola Amigos do Script Brasil.Estou querendo fazer um programa para deletar 3 tipos de arquivos.Em varios PCS.Atualmente eu utilizo um Arquivo BAT no iniciar do windows.com o seguinte comando:del *.iws /s /q del *.kdb /s /q del *.wif /s /q pauseEsses Arquivos são criados pelo programa utilizado aqui na verdade são arquivos TMP.Eu peguei um exemplo antigo parecido que o Douglas_soares postou Localiza e Copia.Mas n estou conseguindo Adaptar o codigo para Localiza e Deleta.Da ultima vez que tentei adaptar este codigo acabei deletando um monte de arquivos da minha HD :lol:Se alguém poder me ajudar eu agradeço muito! :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 6, 2010 Denunciar Share Postado Agosto 6, 2010 Não vou te ajudar nesse momento pois cheguei da escola agora e vou dar uma jogadinha, rsrsrsrs, se ninguém te responder até amanha eu te dou uma força, tenho mt serviço amanha =/ mas no sabado to livre, rsrsrs então até lá!Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 6, 2010 Denunciar Share Postado Agosto 6, 2010 Vou postar este "monstro", mas é só impressão, porque na verdade ela pode fazer um pouco mais do que você precisa. Na real, para você bastaria basicamente a funçõa DeleteFilesOnPath. Mas, ela deve funcionar direitinho.// Esta procedure exclui todos os arquivos localizados em um diretório, conforme mascara // PATH = diretório onde os arquivos serão pesquisados (observar que é concatenada a contra-barra) // FILEMASK = mascara identificando o tipo do arquivo a ser removido - apenas um tipo (ex. *.tmp) // LogList = corresponde a uma lista onde serão armazenados os resultados (é um log do processo) procedure DeleteFilesOnPath(Path, FileMask :string; LogList: TStrings); var SearchRec :TSearchRec; begin LogList.Add(Format('=> Pesquisando pasta [%s] - [%s]', [Path, FileMask])); if FindFirst(Path+'\'+FileMask, faArchive, SearchRec) = 0 then try repeat Application.ProcessMessages; if not DeleteFile(Path +'\' +SearchRec.Name) then LogList.Add(' *** Erro apagando arquivo: '+SearchRec.Name) else LogList.Add(' ->'+SearchRec.Name +' - Ok'); until FindNext(SearchRec) <> 0; finally FindClose(SearchRec); end; end; // Esta procedure exclui todos os arquivos localizados a partir de um diretório, recursivamente, conforme mascaras // STARTPATH = diretório a partir do qual os arquivos serão pesquisados, incluindo sub-diretórios (observar que é concatenada a contra-barra) // FILEMASK = mascara identificando os tipos dos arquivos a ser removido - vários tipo (ex. *.tmp;*.dat;*.log;) // LogList = corresponde a uma lista onde serão armazenados os resultados (é um log do processo) procedure DeleteFilesOnPathRecursive(StartPath, FileMask :String; LogList: TStrings); var TmpMask :string; SearchRec :TSearchRec; begin // busca primeira entra de um diretório dentro do diretório em StartPath if FindFirst(StartPath +'\*.*', faDirectory, SearchRec) = 0 then try repeat Application.ProcessMessages; if (SearchRec.Name <> '..') then begin // para cada diretório, irá excluir uma extensão contida na lista de máscaras TmpMask := FileMask; while TmpMask <> '' do begin Application.ProcessMessages; DeleteFilesOnPath(StartPath, Copy(TmpMask, 1, 5), LogList); Delete(TmpMask, 1, 6); end; // exclusão recursiva - sub-diretórios apenas if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then DeleteFilesOnPathRecursive(StartPath+'\'+SearchRec.Name, FileMask, LogList); end; until FindNext(SearchRec) <> 0; finally FindClose(SearchRec); end; end; procedure DeleteFiles(StartPath, FileMask :String; RecursiveDir: Boolean; LogList: TStrings); begin if not RecursiveDir then begin while FileMask <> '' do begin Application.ProcessMessages; DeleteFilesOnPath(StartPath, Copy(FileMask, 1, 5), LogList); Delete(FileMask, 1, 6); end; end else DeleteFilesOnPathRecursive(StartPath, FileMask, LogList); end; No programa, o uso é simples. Eu coloquei apenas um TMemo e um Botão, mas a interface fica a seu cargo. Voce pode por um checkbox para indicar se devem ser processados os sub-diretórios ou não: procedure TForm1.Button1Click(Sender: TObject); var FileMask :String; begin Memo1.Lines.Clear; FileMask := '*.tmp;*.log;*.ini;*.dat;'; // esta string pode ser obtida do usuário de alguma forma DeleteFiles('C:\WINDOWS\Temp', FileMask, False, Memo1.Lines); // FALSE = Exclusão só na pasta expecificada // DeleteFiles('C:\WINDOWS\Temp', FileMask, True, Memo1.Lines); // TRUE = Exclusão recursiva a partir da pasta indicada end;Para os testes, aconselho a comentar a linha que exclui os arquivos (DeleteFile), localizada na procedure DeleteFilesOnPath.T+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 6, 2010 Denunciar Share Postado Agosto 6, 2010 boa Micheus ;), precisando de ajuda amanha ainda to livre, rsrsrsrsAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Agosto 6, 2010 Autor Denunciar Share Postado Agosto 6, 2010 (editado) Grande! Micheus, extamente o que eu queria.Este Codigo funcionou perfeitamente!E ainda melhor, ele Gera um LOG no TMemo.Dai fica mais facil de saber o que ele esta excluindo.Apos Exluir os arquivos vou salvar em um arquivo LOG com a data local.Realmente muito Obrigado!!! RESOLVIDOÉ Douglas Soares, estudar cansa mesmo. Lembro no tempo da Faculdade e Ainda tinha que trabalhar Acordava as 5 da manha e só ia dormir a Meia Noite.Foram 4 Anos muito Cansativos mas valeu muito apena!Lembro que na epoca 2000 a 2004 estava no Auge as LANHOUSE, era minha valvula de escape aos Sabados.Só Trabalho e Estudo n da certo temos que ter um momento para a Diversão!Ainda hoje raramente jogo DODSource e Left4Dead. Editado Agosto 6, 2010 por jaumDoDelphi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 6, 2010 Denunciar Share Postado Agosto 6, 2010 Apos Exluir os arquivos vou salvar em um arquivo LOG com a data local.Só para lembrar, isto é tarefa simples:TMemo1.Lines.SaveToFile(<nome do arquivo>);A flexibilidade no parâmetro (TStrings), lhe da a possibilidade de não mostrar nada durante o processo (em um TMemo ou TListBox) e apenas ao final você gerar o arquivo de log, uma vez que você pode criar uma variável TStringList na procedure e passá-la como parâmetro.O uso das procedures independentes do form, lhe permite colocá-las em uma outra unit para que seja facilmente utilizadas por outros projetos.beleza. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 6, 2010 Denunciar Share Postado Agosto 6, 2010 É Douglas Soares, estudar cansa mesmo. Lembro no tempo da Faculdade e Ainda tinha que trabalhar Acordava as 5 da manha e só ia dormir a Meia Noite.Foram 4 Anos muito Cansativos mas valeu muito apena!Lembro que na epoca 2000 a 2004 estava no Auge as LANHOUSE, era minha valvula de escape aos Sabados.Só Trabalho e Estudo n da certo temos que ter um momento para a Diversão!Ainda hoje raramente jogo DODSource e Left4Dead.kkkk, faculdade? rsrssr tenho 16 anos, eu to no segundo colegial ainda huhusauha, tem gente que nem acredita que eu programo :wacko: , qualquer dia nois marca um jogo de Left4Dead no garena!!! :PAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Agosto 6, 2010 Autor Denunciar Share Postado Agosto 6, 2010 KKKK mesmo, Douglas!Essas Juventudes de Hj!Daqui a 10 anos teremos Pessoas de 6 anos já sendo expert em PC!realmente é surpreendente você sendo tão jovem, tendo este vasto conhecimento!Me admira muito!achei que você tinha uns 20 e poucos!Mas idade n importa! O importante é você continuar sendo a mesmo pessoaGente Boa que sempre ajuda a galera do FORUM! Cara, Pensar que meu filho hj tem 4 anos! Mas daqui alguns anosEle vai saber bem mais doque Eu :lol:Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jaumDoDelphi
Ola Amigos do Script Brasil.
Estou querendo fazer um programa para deletar 3 tipos de arquivos.
Em varios PCS.
Atualmente eu utilizo um Arquivo BAT no iniciar do windows.
com o seguinte comando:
Esses Arquivos são criados pelo programa utilizado aqui na verdade são arquivos TMP.
Eu peguei um exemplo antigo parecido que o Douglas_soares postou Localiza e Copia.
Mas n estou conseguindo Adaptar o codigo para Localiza e Deleta.
Da ultima vez que tentei adaptar este codigo acabei deletando um monte de arquivos da minha HD :lol:
Se alguém poder me ajudar eu agradeço muito! :)
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.