none
Apagar arquivos temporários. RRS feed

  • Pergunta

  • Uso este script para deletar alguns arquivos temporários na minha empresa, só que ele apresenta um pequeno problema se um arquivo que ele verificar estiver em uso ele para de executar dando erro, caso contrário se todos os arquivos estiverem liberados ele executa com perfeição. Alguém sabe como contornar esse problema??? Segue o script abaixo.


    strPasta="Z:\"

    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

     

    Sub Apagar_Arquivos(Pasta)

     set folder = FSO.getFolder (Pasta)


     if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       Apagar_Arquivos SubFolder
      next
     end if


     for each file in folder.files
     set objFile = FSO.GetFile(file)
     if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" then
       File.delete
     end if
     next

    end sub
    domingo, 20 de fevereiro de 2011 17:10

Respostas

  • Pessoa consegui resolver adicionando a seguinte linha no código On Error Resume Next, abaixo esta o script prontinho

    strPasta="Z:\"

    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

    On Error Resume Next

    Sub Apagar_Arquivos(Pasta)

     set folder = FSO.getFolder (Pasta)


     if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       Apagar_Arquivos SubFolder
      next
     end if


     for each file in folder.files
     set objFile = FSO.GetFile(file)
     if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" then
       File.delete
     end if
     next

    end sub
    sábado, 17 de março de 2012 23:59

Todas as Respostas

  • Tente usar esse script

     

    On Error Resume Next

    Set wshShell = CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim strProgFiles, strWinDir
    strWinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")
    strProgFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")

    '*************  Manutenção de Arquivos
    Const OverwriteExisting = True

    '**** Geral '
    objFSO.DeleteFile ("C:\Documents and Settings\"&objNetwork.UserName&"\Configurações locais\Temp\*.*"),True
    objFSO.DeleteFolder ("C:\Documents and Settings\"&objNetwork.UserName&"\Configurações locais\Temp\*"),True


    Thomas Edson Mattos Roeder
    segunda-feira, 28 de fevereiro de 2011 20:42
  • Se você tiver o PowerShell na sua máquina, use o comando abaixo:

     

    dir *.tmp -Recurse | del -force

     

    []s,

     

    Vinicius


    Vinicius Canto MVP Admin Frameworks Blog: http://viniciuscanto.blogspot.com
    segunda-feira, 28 de fevereiro de 2011 22:09
    Moderador
  • Se você tiver o PowerShell na sua máquina, use o comando abaixo:

     

    dir *.tmp -Recurse | del -force

     

    []s,

     

    Vinicius


    Vinicius Canto MVP Admin Frameworks Blog: http://viniciuscanto.blogspot.com
    Este script não funciona na minha situação já que quero deletar arquivos de diferentes extensões e não apenas 'tmp' se alguém tiver outra solução agradeço
    sábado, 5 de março de 2011 00:22
  • Lucas,

     

    Utilizo o script abaixo para deletar arquivos .ini e .exe da pasta C:\TEMP e das configurações locais do perfil do usuário, veja se te ajuda...

     

    On Error resume Next

    strComputer = "."

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(USER_PROFILE)
    Set objFolderItem = objFolder.Self
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Const USER_PROFILE = &H28&
    objConflocal = "\Config~1\Temp\"

    'Pastas que serão verificadas
    strPasta1 = objFSO.GetFolder(objFolderitem.path & objConflocal)
    strPasta2 = objFSO.GetFolder("C:\Temp\")

    'Extensões, separados por ";"
    arrTipos = "ini;exe"

    arrTipos = split(arrTipos,";")

    Set colFiles = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta1& "'} Where " _
             & "ResultClass = CIM_DataFile")

    Set FilesTemp = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta2& "'} Where " _
             & "ResultClass = CIM_DataFile")

    'Limpando strPasta1
    For Each objFile in colFiles
     For Each tipo in arrTipos
         If objFile.Extension = tipo Then
               objFile.Delete
           End If
      Next
    Next

    'Limpando strPasta2
    For Each objFile in FilesTemp
     For Each tipo in arrTipos
         If objFile.Extension = tipo Then
               objFile.Delete
           End If
      Next
    Next

    Boa sorte!!!

    sexta-feira, 11 de março de 2011 16:44
  • Lucas,

     

    Utilizo o script abaixo para deletar arquivos .ini e .exe da pasta C:\TEMP e das configurações locais do perfil do usuário, veja se te ajuda...

     

    On Error resume Next

    strComputer = "."

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(USER_PROFILE)
    Set objFolderItem = objFolder.Self
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Const USER_PROFILE = &H28&
    objConflocal = "\Config~1\Temp\"

    'Pastas que serão verificadas
    strPasta1 = objFSO.GetFolder(objFolderitem.path & objConflocal)
    strPasta2 = objFSO.GetFolder("C:\Temp\")

    'Extensões, separados por ";"
    arrTipos = "ini;exe"

    arrTipos = split(arrTipos,";")

    Set colFiles = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta1& "'} Where " _
             & "ResultClass = CIM_DataFile")

    Set FilesTemp = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta2& "'} Where " _
             & "ResultClass = CIM_DataFile")

    'Limpando strPasta1
    For Each objFile in colFiles
     For Each tipo in arrTipos
         If objFile.Extension = tipo Then
               objFile.Delete
           End If
      Next
    Next

    'Limpando strPasta2
    For Each objFile in FilesTemp
     For Each tipo in arrTipos
         If objFile.Extension = tipo Then
               objFile.Delete
           End If
      Next
    Next

     

    Boa sorte!!!

    Marcos funcionou, apagou com o arquivo temporário aberto, o único problema é que ele não faz uma varredura nas sub-pastas se alguém conseguir fazer este mesmo script fazer uma varredura nas sub-pastas e apagar os arquivos ficaria completo.

    Vlw

    domingo, 27 de março de 2011 18:26
  • Pessoa consegui resolver adicionando a seguinte linha no código On Error Resume Next, abaixo esta o script prontinho

    strPasta="Z:\"

    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

    On Error Resume Next

    Sub Apagar_Arquivos(Pasta)

     set folder = FSO.getFolder (Pasta)


     if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       Apagar_Arquivos SubFolder
      next
     end if


     for each file in folder.files
     set objFile = FSO.GetFile(file)
     if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" then
       File.delete
     end if
     next

    end sub
    sábado, 17 de março de 2012 23:59