[Script] Limpeza de diretórios mantendo sub diretórios especificos e log
Enviado: 11 Jun 2013 22:21
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 !
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