Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gamefe

Excluindo arquivos de forma inteligente

Recommended Posts

Pessoal, estou utilizando uma rotina encontrada no site do iMasters (http://imasters.com.br/artigo/9996/excluindo_arquivos_de_forma_inteligente).

 

Alterei algumas coisas, mas está praticamente idêntico.

<%
´Constante que determina o "tempo de vida" dos arquivos
const TEMPO_DE_VIDA = 7

´Constante que determina a unidade do "tempo de vida"
´yyyy - Year´
´q - Quarter
´m - Month
´y - Day of year
´d - Day
´w - Weekday
´ww - Week of year
´h - Hour
´n - Minute
´s - Second
const TEMPO_DE_VIDA_UN = "d"

´variável para 
dim pasta
pasta = Server.MapPath("./arquivos/")

´Declara o File System Object
set fso = server.CreateObject("Scripting.FileSystemObject")

´GetFolder retorna a pasta passada por parâmetro
set fsoP = fso.getFolder(pasta)

´fsoP.files contem todos os arquivos da pasta
for each arq in fsoP.files
´Escreve na tela o nome do arquivo e sua data de criação.
Response.Write(arq.name&" - criado em "&arq.dateCreated&".<br />")

´Caso o "tempo de vida" do arquivo tenha passado o tempo permitido, o arquivo é deletado
if DateDiff(TEMPO_DE_VIDA_UN,arq.dateCreated,now) > TEMPO_DE_VIDA then
´Escreve na tela o nome do arquivo deletado
Response.Write(arq.name&" deletado.<br/>")

´Deleta o arquivo
arq.Delete 
end if
next

´Libera variáveis da memória
set pasta = nothing
set arq = nothing
set fsoP = nothing
set fso = nothing
%>

Acontece que esta rotina deleta todos os arquivos com mais de 7 dias. Eu queria saber como fazer para ela deletar todos os arquivos criados domingo à sexta-feira, mas não deletar os criados aos sábados, ou seja, deletaria todos os arquivos com mais de 7 dias desde que o arquivo não tenha sido criado aos sábados.

 

Como fazer?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o weekday e compara, se for igual a domingo, não apaga e se for igual aos outros dias, apaga.

 

Vinicius, alterei para weekday, coloquei o valor de quinta-feira (5). Ficou assim:

 

const TEMPO_DE_VIDA = 5

'Constante que determina a unidade do "tempo de vida"
'yyyy - Year´
'q - Quarter
'm - Month
'y - Day of year
'd - Day
'w - Weekday
'ww - Week of year
'h - Hour
'n - Minute
's - Second
const TEMPO_DE_VIDA_UN = "w"

Depois lá no final alterei para

 

if DateDiff(TEMPO_DE_VIDA_UN,arq.dateCreated,now) >= TEMPO_DE_VIDA then

Mando rodar o script mas não funciona e não retorna erro algum. Alguma ideia do que pode ser? Lembrando que se eu colocar "d" funciona perfeitamente.

 

Agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que ao inves de 5 terá de escrever o nome do dia, no caso quinta-feira.

na duvida, dá um response.write weekday(date) para ver o que retorna.

 

Fiz isso e retornou o valor "4", então alterei de >= para =

 

Acontece que não deleta os arquivos e não retorna erro algum. Alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que fazer alguns ajustes no code

 

vai ficar assim

 

<%
dim pasta, deletarsemana

deletarsemana = 4

set fso = server.CreateObject("Scripting.FileSystemObject")
set fsoP = fso.getFolder(Server.MapPath("arquivos/"))

for each arq in fsoP.files
   Response.Write(arq.name&" - criado em "&arq.dateCreated&".<br />")
   if weekday(deletarsemana) =  weekday(arq.dateCreated) then
      Response.Write(arq.name&" deletado.<br/>")
      arq.Delete
   else
      Response.Write("nenhum arquivo nesta semana para deletar")
   end if
next

set arq = nothing
set fsoP = nothing
set fso = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa um code tipo explorer, dae você tem todas as funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou perfeitamente!

Agora outra dúvida.

Como fazer para que o código delete os arquivos de segunda,terça,quarta,quinta sejam deletados apenas após 10 dias?

Agradecido pela grande ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque o AND na instrução sql e faça a comparação data atual >= com a data de criação.

 

Desta forma somente aqueles arquivos com a semana correta e maior que 10 dias serão excluidos.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou fazer um agendamento no server para rodar um função a cada 10 fias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficaria mais ou menos assim?

 

<%

dim pasta, deletarsemana

deletardomingo = 1
deletarsegunda = 2
deletarterca = 3
deletarquinta = 5
deletarsabado = 7

TEMPO_DE_VIDA = 15

set fso = server.CreateObject("Scripting.FileSystemObject")
set fsoP = fso.getFolder(Server.MapPath("arquivos/"))

for each arq in fsoP.files
   Response.Write(arq.name&" - criado em "&arq.dateCreated&".<br />")
   if weekday(deletardomingo) or weekday(deletarsegunda) or weekday(deletarterca) or weekday(deletarquinta) or weekday(deletarsabado) AND weekday(arq.dateCreated) >= TEMPO_DE_VIDA then
      Response.Write(arq.name&" deletado.<br/>")
      arq.Delete
   else
      Response.Write("nenhum arquivo nesta semana para deletar")
   end if
next

set arq = nothing
set fsoP = nothing
set fso = nothing

%>

valeuuu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou disponibilizar seu code no lab. de script....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que não está funcionando perfeitamente o código. Mesmo com menos de 15 dias, os arquivos são excluidos.

 

if weekday(deletardomingo) or weekday(deletarsegunda) or weekday(deletarterca) or weekday(deletarquinta) or weekday(deletarsabado) AND weekday(arq.dateCreated) >= TEMPO_DE_VIDA then

Alguma ideia de como consertar isso?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ??

tenta fazer um agendamento no server

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

Não gera nenhum erro, só que apaga todos os arquivos mesmo com menos de 15 dias.

 

Para fazer um agendamento no server, acredito que não funcione, já que ninguém chega a logar. Independente disso, como eu agendaria no servidor um script para verificar os arquivos somente com mais de 15 dias?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não resolve porque estou tentando manter no servidor o backup de dois dias. Assim, por mais antigo que seja, terei sempre os backups de quarta e sexta.

 

Teria outra alternativa?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.