none
Script para deletar arquivos antigos? RRS feed

  • Pergunta

  • Pessoal,

    É o seguinte, tenho uma pasta em q tds usuarios da rede tem acesso p colocarem arquivos é uma pasta free mas essa pasta está com muito arquivos antigos e preciso criar um script em VBS para que arquivos que forem colocados lá à 5 dias atrás sejam excluidos. Estou pensando em colocá-lo p agendamento do windows e ser executado uma vez por dia, tentei criar o script mas n obtive sucesso, será que alguem poderia me ajudar com esse script ??

    Abraço

    Leonardo
    O script que criei segue abaixo, ele só apagar o arquivo que eu especificar não consegui colocar ele para apagar arquivos dentro de uma pasta,

     

    im objFSO, ObjFile

    comando = "C:\BNK.wma"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(comando)


    If DateAdd("d", now, "-5") >= ObjFile.DateCreated then

    objFSO.DeleteFile("c:\BNK.WMA")

    Else

    MsgBox ("Sem Arquivos antigos")

    End If

     

     

    att,

     

    Leonardo Couto

    segunda-feira, 18 de dezembro de 2006 14:56

Respostas

  • Resposta meio rápida porque eu to meio sem tempo:

    1) Tem comando sim, usando o Windows Powershell:

    ls | ? {$_.lastwritetime -lt (date).addDays(-10)} | foreach {rm $_}

    2) Porque você não usa mesmo o script? O erro está sendo na verdade ao criar a tarefa? Você está criando corretamente, com o comando wscript <caminho do vbs> ?

    []s,



    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    terça-feira, 19 de dezembro de 2006 02:04
    Moderador
  • Leonardo tenta estas modificações aqui cara:


    set FSo = CreateObject("Scripting.FileSystemObject")
    set folder = FSO.getFolder ("pasta_temp_desejada")   'ex: h:\pasta_temporária
    for each file in folder.files
    if (dateDiff("d", file.datecreated, now) >5) then
    File.delete
    end if
    next




    Abs
    segunda-feira, 25 de dezembro de 2006 04:34
  • Aproveitei o script do Wemali e a transformei em uma função recursiva que verifica se a pasta tem subpastas e apaga também as pastas vazias.

     

    strPasta="C:\temp"

    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

     

    Sub Apagar_Arquivos(Pasta)

     set folder = FSO.getFolder (Pasta)


     'Verifica se tem subpastas
     if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       Apagar_Arquivos SubFolder
      next
     end if


     for each file in folder.files
      if (dateDiff("d", file.datecreated, now) >5) then
       File.delete
      end if
     next


     if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then
      Folder.delete true
     end if

    end sub

    terça-feira, 26 de dezembro de 2006 12:42
    Moderador

Todas as Respostas

  • Leonardo,

    No post abaixo tem exemplos utilizando o purge.exe e também em vbs.

    http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=767819&SiteID=29

     

    segunda-feira, 18 de dezembro de 2006 15:12
    Moderador
  • E ae Fábio Blz?

     

     

    Man eu tinha visto este tópico antes mas não me interessou usar o purge.exe o que eu queria mesmo é um script  o q está no tópico tb está meio fora de alinhamento p o q eu quero não há uma linha de comando p que eu possar apagar arquivos com data de criação a 5 dias ou coisa parecida, se tiver um script onde eu possa deletar os arquivos antigos e se for possível ter uma exceção para alguma pasta seria uma boa. Será que alguem consegue?

    Vlw e abç,

     

    Leonardo

     

     

    segunda-feira, 18 de dezembro de 2006 17:15
  • Resposta meio rápida porque eu to meio sem tempo:

    1) Tem comando sim, usando o Windows Powershell:

    ls | ? {$_.lastwritetime -lt (date).addDays(-10)} | foreach {rm $_}

    2) Porque você não usa mesmo o script? O erro está sendo na verdade ao criar a tarefa? Você está criando corretamente, com o comando wscript <caminho do vbs> ?

    []s,



    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    terça-feira, 19 de dezembro de 2006 02:04
    Moderador
  • E ae Venicius!

     

    eu gostaria até usar o script que eu fiz acima mas nele eu naum consegui colocar para q ele excluisse arquivos dentro de uma determinada pasta, eu consigo excluir o arquivo que desejo verificar com o DateCreated e GetFile e já da pasta inteira eu não consegui faze-lo fucionar. Enquanto ao PowerShell não tenho experiência nele não sei como usaria o comando que me passou se poder me ajudar eu agradeceria muito !!

     

    abç

    Leonardo 

     

    terça-feira, 19 de dezembro de 2006 16:10
  • Leonardo tenta estas modificações aqui cara:


    set FSo = CreateObject("Scripting.FileSystemObject")
    set folder = FSO.getFolder ("pasta_temp_desejada")   'ex: h:\pasta_temporária
    for each file in folder.files
    if (dateDiff("d", file.datecreated, now) >5) then
    File.delete
    end if
    next




    Abs
    segunda-feira, 25 de dezembro de 2006 04:34
  • Aproveitei o script do Wemali e a transformei em uma função recursiva que verifica se a pasta tem subpastas e apaga também as pastas vazias.

     

    strPasta="C:\temp"

    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

     

    Sub Apagar_Arquivos(Pasta)

     set folder = FSO.getFolder (Pasta)


     'Verifica se tem subpastas
     if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       Apagar_Arquivos SubFolder
      next
     end if


     for each file in folder.files
      if (dateDiff("d", file.datecreated, now) >5) then
       File.delete
      end if
     next


     if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then
      Folder.delete true
     end if

    end sub

    terça-feira, 26 de dezembro de 2006 12:42
    Moderador
  •  

    Caros Weligton e Fabio,

     

    por favor, podem comentar as linhas de códigos desses scripts??? Desculpem-me, é que sou iniciante em scripts e os códigos de vocês me ajudaram em uma tarefa aqui, gostaria de entender bem o código, o que cada linha está fazendo. Desde já agradeço pela ajuda.

     

    []´s

     

    PH.

    quarta-feira, 7 de janeiro de 2009 10:55
  • Basta instalar o PowerShell (disponível gratuitamente no site da MS), entrar no diretório onde estão os arquivos e colar a linha acima.



    []s,


    Vinicius Canto
    MVP Admin Frameworks
    http://viniciuscanto.blogspot.com

    Vinicius Canto MVP Admin Frameworks Blog: http://viniciuscanto.blogspot.com
    quinta-feira, 26 de março de 2009 04:53
    Moderador
  • Bom dia Vinícius,

    Irei usar o seu comando no PowerShell em meu servidor de arquivos,

    mas estou com uma dúvida, o comando acima irá apagar pastas de que

    lugar do servidor, de qual disco.?

    Outra coisa tem como eu agendar para executar todos os dias?


    Profisional TI
    segunda-feira, 26 de julho de 2010 14:07
  • Bom dia Welington Lima,

    Me explica o que estou fazendo de errado no meu script

    set FSo = CreateObject("Scripting.FileSystemObject")
    set folder = FSO.getFolder ("C:\Downloads")
    for each file in folder.files
    if (dateDiff("c", file.datecreated, now) >0) then
    File.delete
    end if
    next


    Profisional TI
    segunda-feira, 26 de julho de 2010 14:43