none
Script para apagar somente arquivos e subpastas RRS feed

  • Pergunta

  • Prezados

    Tenho o script abaixo, utilizo (agendamento) para apagar arquivos e pastas de uma unidade de rede. Gostaria de uma ajuda, para modificar o script, adicionando estes recursos:

    1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;

    2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;

    Se nao for pedir muito, peço que mostre quais os trechos que foram modificados no script original.

    Obrigado!

    Set objNetwork = CreateObject("Wscript.Network")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    'Coloque aqui a pasta que será verificada
    strPasta = "D:\PROJETO\Transf"
    
    ' NOME DO ARQUIVO DE LOG
    strLogFile = "log_transf.txt"
    
    'pastas que serao mantidas
    
    arrpastas = "Relatorios,Suporte,RM"
    
    arrPastas = Split(arrPastas,",")
    
    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.echo "FIM DO SCRIPT"
    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
    'wscript.echo strCaminho.name
    
    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
    

    Sou Livre !


    • Editado Fábio JrModerator quarta-feira, 27 de fevereiro de 2013 03:21 Formatação do código
    terça-feira, 26 de fevereiro de 2013 20:53

Respostas

  • 1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;

    Utilize o on error resume next, assim se ocorrer o erro o script vai seguir em diante

    2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;

            No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).

    Tente modificar, se não der certo poste o código modificado e o qual o comportamento q o novo código apresentou.


    Fábio de Paula Junior

    quarta-feira, 27 de fevereiro de 2013 03:23
    Moderador

Todas as Respostas

  • 1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;

    Utilize o on error resume next, assim se ocorrer o erro o script vai seguir em diante

    2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;

            No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).

    Tente modificar, se não der certo poste o código modificado e o qual o comportamento q o novo código apresentou.


    Fábio de Paula Junior

    quarta-feira, 27 de fevereiro de 2013 03:23
    Moderador
  • Fabio, obrigado pela ajuda.

    Coloquei o ON ERROR RESUME NEXT, fiz um teste, aparentemente o script continuou apagando.

    A pasta raiz nao é apagada (strPasta).

    Por exemplo:

    Pasta1, pasta2, pasta3

    Gostaria que o script entrasse em cada pasta e apagasse o conteudo, mas nao as pastas. Assim, a estrutura de pastas continua intacta.


    Sou Livre !

    quarta-feira, 27 de fevereiro de 2013 13:17
  • Não entendi!!! Vc disse:

    2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;


    Fábio de Paula Junior

    quinta-feira, 28 de fevereiro de 2013 21:17
    Moderador
  • A dica continua a mesma

    No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).

    Mas já que são várias talvez precise de mais "IF"s.


    Fábio de Paula Junior

    terça-feira, 5 de março de 2013 13:22
    Moderador