Usuário com melhor resposta
script para localizar arquivos contendo caracteres

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
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
- Marcado como Resposta Vitor Alexandre R. da Silva quinta-feira, 24 de setembro de 2009 21: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
-
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 -
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
- Marcado como Resposta Vitor Alexandre R. da Silva quinta-feira, 24 de setembro de 2009 21:17
-