3 de ago. de 2011

Deletar arquivo do dia anterior

pinky-e-cerebro

Dica rápida…

A alguns dias dias atrás a equipe de desenvolvimento com a qual estava trabalhando decidiu persistir o Viewstate do ASP.NET no HD do servidor.

Após implantar as configurações, rotinas e afins, ficou a dúvida se as rotinas de exclusão dos viewstates antigos estava funcionando corretamente.

Um desenvolvedor deu a ideia de criar um .exe que excluísse os arquivos do dia anterior. Logo pensei: que mania de desenvolvedor de achar que o mundo pode ser resolvido com um .exe. (Falo isso com toda a autoridade de ser um desenvolvedor também!)

Então eu intervi, dizendo que apenas persistissem, e eu agendaria uma tarefa no servidor Windows para apagar os viewstates do dia anterior.

Mas… #comofaz?

Como estou trabalhando bastante com Poweshell ultimamente, pensei que não seria difícil desenvolver um script assim.

Após pesquisar um pouco descobri o comando "forfiles" do prompt do Windows mesmo. Essa belezinha lista arquivos, podendo aplicar alguns filtros. O filtro para os dias é o parametro "D", onde nesse caso, defini –1, veja:

image

#Maravawonderfull, listei os arquivos, mas e agora, como deletá-los? Já pensou que agonia, colocá-los em variáveis  de script basic/bat!?

#Esgurmita!

Puxei um help do comando e loco descobri que havia como passar um comando para aplicar a cada item listado.

Com mais alguns parâmetros consegui gerar um .bat e agendar no Windows a rotina para executá-lo diariamente:

forfiles /P "C:\Users\Spoky\AppData\Local\Temp" /S /M *.txt /D -1 /C "cmd /c del @file"

Onde:

  • P: Diretório da da listagem.
  • S: Busca recursiva pelos diretórios a dentro.
  • M: Aplica a máscara *.txt.
  • D: Data da modificação.
  • C: Aplica algum comando para cada resultado da listagem.

Então #FicaDica Smiley piscando

2 comentários:

Welington Silva disse...

Cara, tive uma ideia pra resolver esse problema, que tal criar um .exe que executa de hora em hora?

Eduardo Spaki disse...

godness ><