script vb para deletar arquivos antigos e pastas
Enviado: 23 Jul 2024 21:25
Gostaria de ver se alguém poderia me ajudar a corrigir meu script em vb, ele está funcionando deletando os arquivos e pastas, porém não está registrando no log de deletados e erros, como faço para que o script registre as informações no log. segue abaixo o script.
Option Explicit
Dim pasta_alvo, dias_para_deletar, caminho_logs, log_erros, log_deletados
Dim objFSO, objFolder, dateThreshold, logStream, errorStream
' Configurações
pasta_alvo = "E:\Teste123\PastaX" ' Substitua pelo caminho da pasta que deseja limpar
dias_para_deletar = 01 ' Número de dias para manter os arquivos antes de excluí-los
' Caminho dos logs
caminho_logs = "C:\Log\Logs" ' Substitua pelo caminho onde deseja armazenar os logs
log_erros = caminho_logs & "\erros.log"
log_deletados = caminho_logs & "\deletados.log"
' Cria o diretório de logs se não existir
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(caminho_logs) Then
objFSO.CreateFolder(caminho_logs)
End If
' Verifica se a pasta existe
If Not objFSO.FolderExists(pasta_alvo) Then
WScript.Quit 1
End If
' Define a data limite para exclusão
dateThreshold = DateAdd("d", -dias_para_deletar, Now)
' Exclui arquivos mais antigos que o limite de dias
Set objFolder = objFSO.GetFolder(pasta_alvo)
Set logStream = objFSO.OpenTextFile(log_deletados, 8, True)
Set errorStream = objFSO.OpenTextFile(log_erros, 8, True)
Sub DeleteOldFiles(folder)
Dim file
For Each file In folder.Files
If file.DateLastModified < dateThreshold Then
On Error Resume Next
file.Delete True
If Err.Number = 0 Then
logStream.WriteLine "Arquivo deletado: " & file.Path
Else
errorStream.WriteLine "Erro ao excluir arquivo: " & file.Path & " - " & Err.Description
Err.Clear
End If
On Error GoTo 0
End If
Next
End Sub
Sub DeleteOldFolders(folder)
Dim subFolder
For Each subFolder In folder.SubFolders
DeleteOldFolders subFolder
If subFolder.DateLastModified < dateThreshold Then
On Error Resume Next
subFolder.Delete True
If Err.Number = 0 Then
logStream.WriteLine "Pasta excluída: " & subFolder.Path
Else
errorStream.WriteLine "Erro ao excluir pasta: " & subFolder.Path & " - " & Err.Description
Err.Clear
End If
On Error GoTo 0
End If
Next
End Sub
DeleteOldFiles objFolder
DeleteOldFolders objFolder
logStream.Close
errorStream.Close
Option Explicit
Dim pasta_alvo, dias_para_deletar, caminho_logs, log_erros, log_deletados
Dim objFSO, objFolder, dateThreshold, logStream, errorStream
' Configurações
pasta_alvo = "E:\Teste123\PastaX" ' Substitua pelo caminho da pasta que deseja limpar
dias_para_deletar = 01 ' Número de dias para manter os arquivos antes de excluí-los
' Caminho dos logs
caminho_logs = "C:\Log\Logs" ' Substitua pelo caminho onde deseja armazenar os logs
log_erros = caminho_logs & "\erros.log"
log_deletados = caminho_logs & "\deletados.log"
' Cria o diretório de logs se não existir
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(caminho_logs) Then
objFSO.CreateFolder(caminho_logs)
End If
' Verifica se a pasta existe
If Not objFSO.FolderExists(pasta_alvo) Then
WScript.Quit 1
End If
' Define a data limite para exclusão
dateThreshold = DateAdd("d", -dias_para_deletar, Now)
' Exclui arquivos mais antigos que o limite de dias
Set objFolder = objFSO.GetFolder(pasta_alvo)
Set logStream = objFSO.OpenTextFile(log_deletados, 8, True)
Set errorStream = objFSO.OpenTextFile(log_erros, 8, True)
Sub DeleteOldFiles(folder)
Dim file
For Each file In folder.Files
If file.DateLastModified < dateThreshold Then
On Error Resume Next
file.Delete True
If Err.Number = 0 Then
logStream.WriteLine "Arquivo deletado: " & file.Path
Else
errorStream.WriteLine "Erro ao excluir arquivo: " & file.Path & " - " & Err.Description
Err.Clear
End If
On Error GoTo 0
End If
Next
End Sub
Sub DeleteOldFolders(folder)
Dim subFolder
For Each subFolder In folder.SubFolders
DeleteOldFolders subFolder
If subFolder.DateLastModified < dateThreshold Then
On Error Resume Next
subFolder.Delete True
If Err.Number = 0 Then
logStream.WriteLine "Pasta excluída: " & subFolder.Path
Else
errorStream.WriteLine "Erro ao excluir pasta: " & subFolder.Path & " - " & Err.Description
Err.Clear
End If
On Error GoTo 0
End If
Next
End Sub
DeleteOldFiles objFolder
DeleteOldFolders objFolder
logStream.Close
errorStream.Close