Usuário com melhor resposta
Apagar arquivos pela idade

Pergunta
-
Pessoal,
Eu não tenho muita intimidade com criação de scripts, mas acho que só um script pode resolver meu problma.
Eu enho uma pasta compartilhada pública, para troca de arquivos entre os funcionários, só que muitos estão fazendo essa pasta de backup e o volume dela volt e meia fica grande e eu tenho que apagar na mão.
Eu peço a ajuda de vocês para criar um script que consiga ver se o arquivo tem 7 dias e se for maior que isso apagar ele.
Pra ficar mais claro: o script rodará todo sábado a tarde, e tudo que for mais antigo que a semana corrente seria deletado, e assim por diante.
Agradeço a todos.
Fábio Nascimento
Respostas
-
Amigo eu utilizo um script pra apagar arquivos, no meu caso são backups antigos, porque eles são gerados diariamente... segue o script...
set fso = createobject("scripting.filesystemobject")
set folder = fso.getfolder("c:\backup\intranet\") ===> Aqui você coloca o caminho onde estão os arquivos
for each file in folder.files
if (datediff("d",file.datecreated,now)>30) then ===> Aqui o período, nesse caso, arquivos maiores de 30 dias, atí vc altera para 7.
file.delete
end if
next
Nesse caso ele vai na pasta descrita acima e apaga tudo que tiver a sua data de criação superior à quantidade de dias que escolher, agora, tem um detalhe se existirem subpastas será necessário utilizar um outro script:
set fso = createobject("scripting.filesystemobject")
set pasta = fso.getfolder("c:\backup\intranet\") ===> Aqui você coloca o caminho onde estão os arquivos
for each subp in pasta.subfolders
if (datediff("d",file.datecreated,now)>30) then ===> Aqui o período, nesse caso, arquivos maiores de 30 dias, atí vc altera para 7.
subp.delete()
end if
next
Já nesse caso, ele vai apagar arquivos e subpastas.
Eu recomendo vc fazer um teste, o primeiro script eu utilizo, já no segundo eu apago tudo, sem colocar condição de tempo de criação, por isso não sei se funciona direitinho.
Salva o script com a extensão .vbs e adiciona uma tarefa no agendador de tarefas do windows, assim ele será exetudado autometicamente....
Qualquer dúvida, às ordens...
Gregorio- Marcado como Resposta Fábio-TI terça-feira, 7 de julho de 2009 14:40
-
Olá,
Fabio, verifique as permissões nas pastas...
Você tem que ter permissão no compartilhamento e nos arquivos (leitura e gravação)
Para você testar, crie a pasta c:\teste e copie uns arquivos e pasta lá dentro...
Aí executa o script pra ver se te atende...
Se atender, verifique as permissões do seu compartilhamento.
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio-TI terça-feira, 7 de julho de 2009 14:40
Todas as Respostas
-
Amigo eu utilizo um script pra apagar arquivos, no meu caso são backups antigos, porque eles são gerados diariamente... segue o script...
set fso = createobject("scripting.filesystemobject")
set folder = fso.getfolder("c:\backup\intranet\") ===> Aqui você coloca o caminho onde estão os arquivos
for each file in folder.files
if (datediff("d",file.datecreated,now)>30) then ===> Aqui o período, nesse caso, arquivos maiores de 30 dias, atí vc altera para 7.
file.delete
end if
next
Nesse caso ele vai na pasta descrita acima e apaga tudo que tiver a sua data de criação superior à quantidade de dias que escolher, agora, tem um detalhe se existirem subpastas será necessário utilizar um outro script:
set fso = createobject("scripting.filesystemobject")
set pasta = fso.getfolder("c:\backup\intranet\") ===> Aqui você coloca o caminho onde estão os arquivos
for each subp in pasta.subfolders
if (datediff("d",file.datecreated,now)>30) then ===> Aqui o período, nesse caso, arquivos maiores de 30 dias, atí vc altera para 7.
subp.delete()
end if
next
Já nesse caso, ele vai apagar arquivos e subpastas.
Eu recomendo vc fazer um teste, o primeiro script eu utilizo, já no segundo eu apago tudo, sem colocar condição de tempo de criação, por isso não sei se funciona direitinho.
Salva o script com a extensão .vbs e adiciona uma tarefa no agendador de tarefas do windows, assim ele será exetudado autometicamente....
Qualquer dúvida, às ordens...
Gregorio- Marcado como Resposta Fábio-TI terça-feira, 7 de julho de 2009 14:40
-
Olá,
Faça um teste com o exemplo abaixo:
pasta = "c:\teste"
Apagar_Arquivos pasta
Sub Apagar_Arquivos(pasta)
Set objFSO = CreateObject("Scripting.FileSystemObject")
'aqui você informa o caminho da pasta
set folder = objFSO.getFolder (Pasta)
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
'AQUI ELE VAI PROCURAR PASTAS E SUBPASTAS.
Apagar_Arquivos SubFolder
next
end if
for each file in folder.files
'AQUI DEFINE A QUANTIDADE DE DIAS.
if DateDiff("d",file.DateLastModified,now) > 7 Then
objFSO.DeleteFile(file.path)
End if
next
End sub
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique -
Gregório,
Alterei o nome da pasta, salvei em vbs mas o script não funciona, tanto manualmente quanto por agendamento, ele executa mas não faz nada.
Jesiel,
Também alterei o caminho da pasta, salvei mas ele ´apresentando um erro de memória insuficiente: 'objFSO.getFolder' código 800A0007 origem: erro de tempo de execução do microsoft VBScript.
Obrigado pela ajuda.
Fábio Nascimento -
Olá,
Fabio, verifique as permissões nas pastas...
Você tem que ter permissão no compartilhamento e nos arquivos (leitura e gravação)
Para você testar, crie a pasta c:\teste e copie uns arquivos e pasta lá dentro...
Aí executa o script pra ver se te atende...
Se atender, verifique as permissões do seu compartilhamento.
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio-TI terça-feira, 7 de julho de 2009 14:40
-
-
Pessoal,
Desculpem o sumisso, é qe me empurraram outro problema de maior prioridade, sam como é né.
Jesiel, o problema era de emissão mesmo, ao menos no meu teste funcionou quando usei credenciais de admin, espero que agora que é a vera funcione também.
Obrigado aos dois, abraços.
Fábio Nascimento -
Fala pessoal tudo bem????
To aproveitando um pouco o Script de Voces e já consegui adaptar um pouco para o meu uso, porem agora me surgiu um outro problema, eu preciso deletar os arquivos na pasta (essa tá OK) e nas subpastas.... Então teria que entrar em cada pasta ver se tem arquivo com mais de X dias sem uso e ai passar a faca, alguem poderia me dar uma ideia de como fazer, porque eu sei que vou ter que entrar na pasta primaria e ir entrando em cada um e executando o script de deleção... Mais como fazer isso é o grande detalhe...
Se alguem puder me ajudar agradeço... Ah o script ajustado a minhas nescessidade está abaixo para caso alguem precise tambem.
set fso = createobject("scripting.filesystemobject")
Set folder = fso.getfolder("c:\maveco\")
For each file in folder.Files
if (datediff("d",file.DateLastModified,Now)>30) Then
'WScript.Echo(data1)
file.delete
end if
next
Valeu e fico no aguardo do pessoal...
Marcos R. Valente | IT Consulting / Support Tecnical. ACP - Altiris Certified Professional. MCP - MCSA + Mailing 2000/2003 Email: marcos.r.valente@gmail.com MSN: coracaovalente1971@hotmail.com -
Olá,
Faça um teste com o exemplo abaixo:
pasta = "c:\teste"
Apagar_Arquivos pasta
Sub Apagar_Arquivos(pasta)
Set objFSO = CreateObject("Scripting.FileSystemObject")
'aqui você informa o caminho da pasta
set folder = objFSO.getFolder (Pasta)
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
'AQUI ELE VAI PROCURAR PASTAS E SUBPASTAS.
Apagar_Arquivos SubFolder
next
end if
for each file in folder.files
'AQUI DEFINE A QUANTIDADE DE DIAS.
if DateDiff("d",file.DateLastModified,now) > 7 Then
objFSO.DeleteFile(file.path)
End if
next
End sub
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
Jesiel,Como ficaria esse seu script para varrer subpastas e deletar somente os arquivos sem prejudicar a estruturas de pastas ? porque aqui na empresa preciso apagar algumas filmagens que estão distribuidas em pastas(separadas por dia), com data maior que 5 meses, gostaria de fazer isso mais que a estrutura permanecesse. Agradeço pela atenção.
-
Olá,
Faça um teste com o exemplo abaixo:
pasta = "c:\teste"
Apagar_Arquivos pasta
Sub Apagar_Arquivos(pasta)
Set objFSO = CreateObject("Scripting.FileSystemObject")
'aqui você informa o caminho da pasta
set folder = objFSO.getFolder (Pasta)
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
'AQUI ELE VAI PROCURAR PASTAS E SUBPASTAS.
Apagar_Arquivos SubFolder
next
end if
for each file in folder.files
'AQUI DEFINE A QUANTIDADE DE DIAS.
if DateDiff("d",file.DateLastModified,now) > 7 Then
objFSO.DeleteFile(file.path)
End if
next
End sub
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifiqueOlá,
Seu script funcionou.. Porém eu preciso que delete também as subpastas antigas... é possível adaptar?
Obrigado!
- Editado Guilherme Vital terça-feira, 8 de maio de 2012 13:27