none
Script procura e apaga arquivos no servidor RRS feed

  • Pergunta

  • Olá,
    pessoal alguem pode me ajudar num script que procura arquivos no servidor e que apague os mesmos?
    Os computadores mac quando copiam no servidor tambem acrescentam um arquivo .DS_Store.
    Esse script deverá buscar esses aqruivos e apagá-los
    Obrigado

    Ivo

    segunda-feira, 27 de abril de 2009 15:32

Respostas

  • Olá,

    Tente o script abaixo:



    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    'caminho para busca dos arquivos
    strPasta="C:\"



    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

    Sub Apagar_Arquivos(Pasta)

    set folder = FSO.getFolder (Pasta)

    ChecaExtensao Folder

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



    end sub


    Function ChecaExtensao(strPasta)

    'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
    arrTipos = "DS_Store;jpg;mp3"


    arrTipos = split(arrTipos,";")

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

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

    End Function


    Se você tiver um compartilhamento (Exemplo: c:\arquivos), com certeza deve ter...

    Coloque o caminho... É melhor que deixar no c:\ como o meu exemplo... Pois irá demorar muito para procurar em todas as pastas do computador.


    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 27 de abril de 2009 20:31

Todas as Respostas

  • Olá,

    Dá uma olhada no script abaixo, veja se te atende:


    'Code Snippet
    'SCRIPT RETIRADO DO SITE: http://forums.microsoft.com/TechNet-BR/ShowPost.aspx?PostID=3899835&SiteID=29

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

     

    'Coloque aqui a pasta que será verificada

    strPasta = "C:\teste"

     

    'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
    arrTipos = "DS_Store;jpg;mp3"


    arrTipos = split(arrTipos,";")

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

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



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 27 de abril de 2009 16:45
  • Olá Jesiel,

    preciso que o script procure em todas as pastas do servidor.
    Os usuários criam várias pastas e arquivos.
    Obrigado
    segunda-feira, 27 de abril de 2009 16:47
  • Olá,

    Tente o script abaixo:



    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    'caminho para busca dos arquivos
    strPasta="C:\"



    set FSo = CreateObject("Scripting.FileSystemObject")

    Apagar_Arquivos(strPasta)

    Sub Apagar_Arquivos(Pasta)

    set folder = FSO.getFolder (Pasta)

    ChecaExtensao Folder

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



    end sub


    Function ChecaExtensao(strPasta)

    'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
    arrTipos = "DS_Store;jpg;mp3"


    arrTipos = split(arrTipos,";")

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

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

    End Function


    Se você tiver um compartilhamento (Exemplo: c:\arquivos), com certeza deve ter...

    Coloque o caminho... É melhor que deixar no c:\ como o meu exemplo... Pois irá demorar muito para procurar em todas as pastas do computador.


    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 27 de abril de 2009 20:31
  • sielOlá Jesiel,

    está dando um erro na linha 43.
    Não sei o qeu ocorre. Pode me ajudar?

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

    End Function

    Obrigado
    terça-feira, 28 de abril de 2009 14:48
  • Olá,

    Fiz os testes aqui.. e funcionou...

    Posta o erro que está dando.

    Até mais,

    Jesiel
    terça-feira, 28 de abril de 2009 16:04

  • Olá Jesiel,
    quando coloco a pasta temp  funciona perfeito.
    Quando retiro a pasta e deixo varrer o hd dá o erro:
    script: c:\.vbs
    line: 43
    char:1
    Error: 0x80041017
    code: 80041017
    Source: Null


    Abs.
    terça-feira, 28 de abril de 2009 16:11

  • Olá Jesiel,
    quando coloco a pasta temp  funciona perfeito.
    Quando retiro a pasta e deixo varrer o hd dá o erro:
    script: c:\.vbs
    line: 43
    char:1
    Error: 0x80041017
    code: 80041017
    Source: Null


    Abs.
    terça-feira, 28 de abril de 2009 16:11
  • Olá,

    Este erro é de permissão...

    Verifique se o usuário tem permissão de administrador (para acessar as pastas do c:\windows

    Coloque no inicio do script a linha: On error resume next

    Poste os resultados.

    Até mais,

    Jesiel

    terça-feira, 28 de abril de 2009 16:29
  • Boa tarde Jesiel,

    fiz o teste como administrador no servidor e continuou dando o mesmo erro.
    Testei outro script e funcionou, mas em cada arquivo que apaga ele solicita um ok.
    São muitos arquivos e fiquei 15 minutos dando ok.
    Pode me ajudar neste script?
    segue abaixo:

    Set FSO = CreateObject("Scripting.FileSystemObject")
    DIM FolderL

    FolderL = "f:\"

    ShowSubfolders FSO.GetFolder(FolderL)
    Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
     Set folder = FSO.GetFolder(Subfolder.Path)
     For Each File in Folder.Files
      If File.Name = ".DS_Store" then
       wscript.echo "Arquivo: " & File & ", " & File.DateLastModified
       FSO.DeleteFile File, True
      End if
     Next
     ShowSubFolders Subfolder
    Next
    End Sub


    Obrigado

    Ivo

    quinta-feira, 30 de abril de 2009 17:37
  • Olá,

    Ele está aparecendo a mensagem pois tem a linha wscript.echo...

    Basta você remover esta linha... Ou colocar um apostrofe (') no inicio.

    Com o script que te passei se você adicionar a linha On error resume next, também era pra funcionar.

    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 30 de abril de 2009 19:26