Usuário com melhor resposta
Pesquisar pastas e arquivos que contenham uma determinada string

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..)?
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 txtFunction 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- Marcado como Resposta Rafael Martinez Ximenes sexta-feira, 9 de outubro de 2009 14:48
Todas as Respostas
-
-
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)
NextIf 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 -
-
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 txtFunction 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- Marcado como Resposta Rafael Martinez Ximenes sexta-feira, 9 de outubro de 2009 14:48