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