none
Pesquisar pastas e arquivos que contenham uma determinada string RRS feed

  • Pergunta

  • Bom dia,
    Alguém sabe como fazer um script que quando executado pesquise no computador do usuário todas as pastas e arquivos que contenham uma determinada sequência de caracteres ,por exemplo: todas as pastas e arquivos que possuam a palavra jogo (tipo "meus jogos" , "jogos-online, etc..)?
    quinta-feira, 8 de outubro de 2009 13:38

Respostas

  • Bom dia Jesiel,
    A melhoria seria salvar os resultados em um arquivo de texto, mas eu consegui chegar em um resultado satisfatório.
    Segue abaixo o script como ficou:

    Dim objWMIService, objShell, objFSO, WshNetwork, ObjFileAppending, ActionList, FileSysObj, objTextFile, objNetwork, FileLog,strComputer,ObjFileRead
    Const OverwriteExisting = True
    Set objShell = CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set FileSysObj = CreateObject("Scripting.FileSystemObject")
    strComputer = Inputbox("Digite O Nome do Computador","Pesquisar String")
    Palavra = Inputbox("Digite a string que deseja pesquisar" ,"Definir Pesquisa")
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery _
      ("Select * from Win32_Directory where Name Like '%" & Palavra &"%'")
    i=0
      For Each objFolder in colFolders
       i = i+1
       txt = txt & objFolder.Name & vbcrlf
          'Wscript.Echo "Name: " & objFolder.Name
      Next
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where FileName Like '%" & Palavra &"%'")
    j=0
      For Each objFile in colFiles
       j = j+1
       txt2 = txt2 & objFile.Name & vbcrlf
          'Wscript.Echo objFile.Name
      Next
       
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    FileLog = "\\servidor\compartilhamento\" & palavra & " em " & WshNetwork.ComputerName & ".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objNetwork = CreateObject("WScript.Network")

    WriteLog "Encontrados :" & vbCrLf & j & " arquivo(s)" & vbCrLf & i & " pasta(s) " & vbCrLf & "contendo a palavra " & palavra & " em: " & Now ()
    WriteLog "arquivos:"
    WriteLog txt2
    WriteLog "pastas:"
    WriteLog txt

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    De qualquer maneira agradeço a atenção e a colaboração do Thiago também.
    Abraços

    sexta-feira, 9 de outubro de 2009 14:48

Todas as Respostas

  • Que tal...
    CD /d C:\PASTA
    DIR *jogo* /s /a

    Thiago Hickmann - Analista de Infraestrutura de TI
    quinta-feira, 8 de outubro de 2009 17:30
  • Oi Thiago,
    realmente esse método funciona, mas estou procurando uma forma de fazer isso em outras máquinas através da minha e com a opção se alterar os critérios de pesquisa.
    De qualquer forma agradeço o seu auxílio.
    Eu consegui montar o script que segue abaixo e estou tentando melhorá-lo:

    strComputer = Inputbox("Digite O Nome do Computador","Pesquisar String")
    Palavra = Inputbox("Digite a string que deseja pesquisar" ,"Definir Pesquisa")
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery _
      ("Select * from Win32_Directory where Name Like '%" & Palavra &"%'")
    i=0
      For Each objFolder in colFolders
       i = i+1
          'Wscript.Echo "Name: " & objFolder.Name  (descomentar essa linha para que seja exibido o nome das pastas)

      Next
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where FileName Like '%" & Palavra &"%'")
    j=0
      For Each objFile in colFiles
       j = j+1
          'Wscript.Echo objFile.Name (descomentar essa linha para que seja exibido o nome dos arquivos)
       Next

    If i>0 Then
        If j>0 Then
          WScript.Echo "Encontrados :" & vbCrLf & j & " arquivos" & vbCrLf & i & "pastas " & vbCrLf & "contendo a palavra " & palavra
        Else 
          WScript.Echo "Encontradas :" & vbCrLf & i & "pastas " & vbCrLf & j & " arquivos" & vbCrLf & "contendo a palavra " & palavra
        End If
      Else
        If j>0 Then
          WScript.Echo "Encontrados :" & vbCrLf & j & " arquivos" & vbCrLf & i & "pastas " & vbCrLf & "contendo a palavra " & palavra
        Else 
          WScript.Echo "Encontradas :" & vbCrLf & i & "pastas " & vbCrLf & j & " arquivos" & vbCrLf & "contendo a palavra " & palavra
        End If
      End If

    quinta-feira, 8 de outubro de 2009 18:12
  • Olá,

    Qual a melhoria você precisa implantar???


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 8 de outubro de 2009 20:36
  • Bom dia Jesiel,
    A melhoria seria salvar os resultados em um arquivo de texto, mas eu consegui chegar em um resultado satisfatório.
    Segue abaixo o script como ficou:

    Dim objWMIService, objShell, objFSO, WshNetwork, ObjFileAppending, ActionList, FileSysObj, objTextFile, objNetwork, FileLog,strComputer,ObjFileRead
    Const OverwriteExisting = True
    Set objShell = CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set FileSysObj = CreateObject("Scripting.FileSystemObject")
    strComputer = Inputbox("Digite O Nome do Computador","Pesquisar String")
    Palavra = Inputbox("Digite a string que deseja pesquisar" ,"Definir Pesquisa")
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery _
      ("Select * from Win32_Directory where Name Like '%" & Palavra &"%'")
    i=0
      For Each objFolder in colFolders
       i = i+1
       txt = txt & objFolder.Name & vbcrlf
          'Wscript.Echo "Name: " & objFolder.Name
      Next
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where FileName Like '%" & Palavra &"%'")
    j=0
      For Each objFile in colFiles
       j = j+1
       txt2 = txt2 & objFile.Name & vbcrlf
          'Wscript.Echo objFile.Name
      Next
       
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    FileLog = "\\servidor\compartilhamento\" & palavra & " em " & WshNetwork.ComputerName & ".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objNetwork = CreateObject("WScript.Network")

    WriteLog "Encontrados :" & vbCrLf & j & " arquivo(s)" & vbCrLf & i & " pasta(s) " & vbCrLf & "contendo a palavra " & palavra & " em: " & Now ()
    WriteLog "arquivos:"
    WriteLog txt2
    WriteLog "pastas:"
    WriteLog txt

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    De qualquer maneira agradeço a atenção e a colaboração do Thiago também.
    Abraços

    sexta-feira, 9 de outubro de 2009 14:48