none
script para localizar arquivos contendo caracteres RRS feed

  • Pergunta

  • Senhores,

    consegui em outros tópicos dados que me ajudaram em certo ponto, que seria um script para localizar e copiar arquivos, porém o ideial para minha situação seria que eu fizesse uma busca nas pastas e subpastas com arquivos que contenham *xxx*

    O que ocorre é, ele não localiza nenhum arquivo creio estar utilizando da forma errada.

    Abaixo segue o script que estou utilizando, com os creditos para o Jesiel que forneceu o material em outro topico.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")

    Set FSO = CreateObject("Scripting.FileSystemObject")

    'Descrição do(s) arquivo(s) que deve(m) ser localizado(s)
    strArquivo = "*texto*"

    'PASTA ONDE PROCURAR
    strPasta = "C:\teste\1"

    ShowSubfolders FSO.GetFolder(strPasta)

    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
           Set colFiles = objWMIService.ExecQuery _
               ("ASSOCIATORS OF {Win32_Directory.Name='" & SubFolder.path & "'} Where " _
                   & "ResultClass = CIM_DataFile")     
                For Each objFile in colFiles
                   if TRIM(MID(objFIle.filename,1,Len(strArquivo))) = TRIM(strArquivo) Then
                      FSO.CopyFile objFile.name , "C:\teste1" & objFile.filename & "." & objFile.extension, TRUE
                   End if

                Next


            ShowSubFolders Subfolder
        Next
    End Sub



    Qualquer ajuda agradeço.

    Abraço,

    Vitor.

    Vitor - MCP | MCSA | MCSA+M | MCTS
    quarta-feira, 23 de setembro de 2009 23:03

Respostas

  • Olá,

    Faltou uma alteração.... Verifique abaixo:


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")

    Set FSO = CreateObject("Scripting.FileSystemObject")

    'Parte do nome do arquivo que será comum
    strArquivo = "ttt"

    'PASTA ONDE PROCURAR
    strPasta = "C:\teste"

    ShowSubfolders FSO.GetFolder(strPasta)
    showArquivos strPasta

    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
          showArquivos SubFolder.path
          ShowSubFolders Subfolder
        Next
    End Sub

    Sub ShowArquivos(subPasta)

    Set objArq = FSO.GetFolder(subPasta)
    Set MyFiles = objArq.files

    For Each MyFiles in objArq.Files
       if instr(Myfiles.name,strArquivo) > 0 Then
          FSO.CopyFile Myfiles.path , "C:\teste1\" , TRUE
       End if
    Next

    End sub


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 24 de setembro de 2009 15:17

Todas as Respostas

  • Olá,

    Verifique o script abaixo:

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")

    Set FSO = CreateObject("Scripting.FileSystemObject")

    'Parte do nome do arquivo que será comum
    strArquivo = "ttt"

    'PASTA ONDE PROCURAR
    strPasta = "C:\teste"

    ShowSubfolders FSO.GetFolder(strPasta)
    showArquivos strPasta

    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
          showArquivos SubFolder.name
          ShowSubFolders Subfolder
        Next
    End Sub

    Sub ShowArquivos(subPasta)

    Set objArq = FSO.GetFolder(subPasta)
    Set MyFiles = objArq.files 

    For Each MyFiles in objArq.Files
       if instr(Myfiles.name,strArquivo) > 0 Then
          FSO.CopyFile Myfiles.path , "C:\teste1\" , TRUE
       End if
    Next

    End sub




    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 24 de setembro de 2009 11:43
  • Jesiel,

      muito obrigado pela resposta. Observei que ele coleta os arquivos que estiverem contidos na pasta, porém, gera erro ao processar as subpastas mais especificamente linha 25.

     Tentei pesquisar algo para tentar depurar, porém, realmente não consegui identificar o ponto.

    Pode dar um auxilio?
    Vitor - MCP | MCSA | MCSA+M | MCTS
    quinta-feira, 24 de setembro de 2009 13:33
  • Olá,

    Faltou uma alteração.... Verifique abaixo:


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")

    Set FSO = CreateObject("Scripting.FileSystemObject")

    'Parte do nome do arquivo que será comum
    strArquivo = "ttt"

    'PASTA ONDE PROCURAR
    strPasta = "C:\teste"

    ShowSubfolders FSO.GetFolder(strPasta)
    showArquivos strPasta

    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
          showArquivos SubFolder.path
          ShowSubFolders Subfolder
        Next
    End Sub

    Sub ShowArquivos(subPasta)

    Set objArq = FSO.GetFolder(subPasta)
    Set MyFiles = objArq.files

    For Each MyFiles in objArq.Files
       if instr(Myfiles.name,strArquivo) > 0 Then
          FSO.CopyFile Myfiles.path , "C:\teste1\" , TRUE
       End if
    Next

    End sub


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 24 de setembro de 2009 15:17
  • Jesiel,

    muito obrigado! Funcionou perfeitamente!
    Vitor - MCP | MCSA | MCSA+M | MCTS
    quinta-feira, 24 de setembro de 2009 21:17