[Script] Limpeza de diretórios mantendo sub diretórios especificos e log

Scripts diversos para automatizar tarefas em servidores ou auxilio com tarefas administrativas.
Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

[Script] Limpeza de diretórios mantendo sub diretórios especificos e log

Mensagem por marceloleaes »

Script escrito em VBS muito util para manter pastas do Fileserver em dia evitando copias de arquivos de usuários em locais não desejados. Ideal para agendar sua execução antes da rotina de backup.

Ele varre o diretório definido, ignora as pastas definidas e gera um arquivo de log de todas as ações tomadas.

Lembre-se de nunca executar em ambiente de produção sem testar !

Código: Selecionar todos

' --------------------------------------------------------------------------------------------------------------------------------------
' Script para limpeza de diretório e subdiretórios mantendo uma ou mais pastas caso necessário
' Ajuste os campos comentados conforme sua necessidade
' --------------------------------------------------------------------------------------------------------------------------------------

Set objNetwork = CreateObject("Wscript.Network")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Diretório que será rodada a limpeza de arquivos
strPasta = "C:\DIRETORIO"
' Destino do arquivo de log gerado pelo script
strLogFile = "C:\LOGS\LIMPEZA-DIRETORIO.txt"
' Pastas que devem ser mantidas dentro do diretório , pode ser somente um valor ou mais valores separados por virgula
arrpastas = "EXEMPLO1,EXEMPLO2,EXEMPLO3"

arrPastas = Split(arrPastas,",")

' --------------------------------------------------------------------------------------------------------------------------------------
' NÃO ALTERAR MAIS NADA NO SCRIPT A PARTIR DESTE PONTO
' --------------------------------------------------------------------------------------------------------------------------------------

Set objLogFile = objFSO.OpenTextFile(strLogFile, 8, True, 0)
objLogFile.WriteLine  VBCRLF
objLogFile.WriteLine "==================================================="
objLogFile.WriteLine "ARQUIVOS DELETADOS EM: " & now
objLogFile.WriteLine "==================================================="

ChecaArquivo strPasta
GeraLog(strPasta)
wscript.quit

Sub ChecaArquivo(strSubPasta)

Set Folder = ObjFSO.GetFolder(strSubPasta)

For each subFolder in Folder.SubFolders
   GeraLog SubFolder.Path
   ChecaArquivo SubFolder.path
   lDeleta = FALSE
   for y = 0 to UBOUND(arrPastas)

      if instr(SubFolder.name,arrPastas(y)) > 0 Then
        wscript.echo subFolder.name
        lDeleta = TRUE
      End if
   Next
   if lDeleta = FALSE Then
      objLogFile.WriteLine "PASTA DELETADA -> "  & subFolder.path &  " deletado em : " & Now
      objFSO.deletefolder(SubFolder.Path)

   End if
Next

End sub

Sub GeraLog(strCaminho)

Set objArq = ObjFSO.GetFolder(strCaminho)
Set MyFiles = objArq.files

For Each MyFiles in objArq.Files
   strFileOrig = Myfiles.path
   objLogFile.WriteLine "ARQUIVO DELETADO -> "  & myfiles.path &  " deletado em : " & Now
   objFSO.deletefile Myfiles.path
Next
End sub


"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

Voltar para “Scripts”