none
Localização por extensão em subpastas. RRS feed

  • Pergunta

  • Ba Galera

    Boa noite, venho pedir uma ajuda para os amigos, com o scritp abaixo que o amigo Fabio me ajudou, eu consigo localizar arquivos por extensão em um determinado caminho, mais estou necessitando que ele leia o conteudo que se encontra nas subpastas abaixo do caminho, para localizar arquivos vhd e vdi de maquinas virtuais, da forma que ele esta ele não localiza nada nas subpastas e o mais estranho é que quando passo o caminho de uma das pastas que tem os arquivos ele também não da o display de tela, alguem sabe o que mudar neste codigo para que ele colete a informação que esta nas subpastas ou uma outra forma com um outro script que não leia o disco todo para localizar os arquivos.

    obrigado tche.


    strComputer = "."
    '----------------------------------------------------------------------------------------------------------------------------------------------------    
    'Definir caminho e extensão do arquivo no disco para localizar os arquivos

    arrPastas = array("%userprofile%\VirtualBox VMs\","%userprofile%\Virtual Machines\")
    arrExtensoes = array("vhd","vdi")

    '----------------------------------------------------------------------------------------------------------------------------------------------------    
    'QUERY para busca dos arquivos
     for each Pasta in arrPastas
      if strQueryP>"" then
       strQueryP = strQueryP & " OR Path = '" & replace(Pasta,"\","\\") & "'"
      else
       strQueryP = "Path = '" & replace(Pasta,"\","\\") & "'"
      end if
     next
     if strQueryP>"" then strQueryP="(" & strQueryP & ")"
     
    for each Extensao in arrExtensoes
      if strQueryE>"" then
       strQueryE = strQueryE & " OR Extension = '" & Extensao & "'"
      else
       strQueryE = "Extension = '" & Extensao & "'"
      end if
     next
     if strQueryE>"" then strQueryE="(" & strQueryE & ")"
     
    if strQueryP>"" then strQuery=strQueryP
     if strQuery>"" and strQueryE>"" then strQuery=strQuery & " AND " & strQueryE
     
     ' Fim da Construção da Query
    '---------------------------------------------------------------------------------------------------------------------------------------------------- 
    'Incio da Pesquisa (Abrindo conexão na WMI Service)

     Set objWMIService = GetObject("winmgmts:" _
         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
     Set colFiles = objWMIService. _
         ExecQuery("Select * from CIM_DataFile where " & strQuery )

    For Each objFile in colFiles
      strArquivos = strArquivos & objFile.FileName & "." & objFile.Extension & "; "

    Next

      WScript.Echo strArquivos

    terça-feira, 20 de março de 2012 22:37

Respostas

  • Versão 99.9, não estava passando strExtensoes para dentro de uma função.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & "\VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")
    'call geralista("C:\Temp","vdi,vhd")
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    
    	SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
    
    	IF not objFSO.FolderExists(strFolderName) THEN exit function
    
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			'Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName,strExtensoes
    	Next
    end function
    	
    Function GetSubFolders(strFolderName,strExtensoes)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				'Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName,strExtensoes
        Next
    End Function


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 26 de março de 2012 17:55
    segunda-feira, 26 de março de 2012 15:20
    Moderador

Todas as Respostas

  • Marcelo,

    Quanto a não encontrar arquivo no primeiro nivel da pasta o erro está nesta linha:

    arrPastas = array("%userprofile%\VirtualBox VMs\","%userprofile%\Virtual Machines\")

    O VBScript não reconhece as váriaveis %userprofile%, repare no script orignal do outro post que nem a unidade do diretório (C:, D:, etc) é colocada nesta linha, o correto seria utilizar, por exemplo, "\temp\".

    Quanto a procurar em subdiretorios dá um pouco mais de trabalho, segue um link explicando uma técnica em .VBS

    How Can I List the Files in a Folder and All Its Subfolders?

    http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/18/how-can-i-list-the-files-in-a-folder-and-all-its-subfolders.aspx

    Se quiser em PowerShell este deve servir

    $Diretorio="C:\Users"
    $Include=@("*.vhd","*.vdi")
    $Files=get-childitem $Diretorio -include $Include -recurse
    
    $Lista=""
    Foreach ($File in $Files){
        $Lista=$Lista+$File.name+";"
    
    }
    $Lista


    Fábio de Paula Junior


    quarta-feira, 21 de março de 2012 12:11
    Moderador
  • Ba Fabio

    Obrigado, vou ver o link tche, vamos ver se consigo.

    Antes de colocar o %userprofile% eu tentei montar assim mais tb nao deu resultado.

    Set objNetSID = CreateObject("WScript.NetWork")
     struser = objNetSID.UserName

    arrPastas = array("\users\"& struser &"\VirtualBox VMs\","\users\"& struser &"\Virtual Machines\")

    e da mesma forma para document and settings mais mesmo assim não vem resultado

    Obrigado pelo coigo em power shell, vou guardar na minha biblioteca o problema é que 85 % do meu parque ainda não tem suporte para esta tecnologia tche.

    quarta-feira, 21 de março de 2012 12:27
  • O vdi está na pasta "\users\"& struser &"\VirtualBox VMs\" ?

    Ele não vai nos subdiretórios, tem que ser na pasta raiz.


    Fábio de Paula Junior

    quarta-feira, 21 de março de 2012 13:35
    Moderador
  • Fabio

    Os vdi, vhd estão nos subdiretorios abaixo do virtualbox e do Virtual Machines..... olha estou trabalhando esta logica por favor veja se consegue me ajudar tche, ele esta dando erro na linha 10 coluna 0 dizendo que error: tipos incompativeis.

    codigo.

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

    Set objNetSID = CreateObject("WScript.NetWork")
     struser = objNetSID.UserName

    arrpastas = Array("\Users\"& struser &" \VirtualBox VMs","\Users\"& struser &"\Virtual Machines")

    Set colSubfolders = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & arrpastas & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
                & "ResultRole = PartComponent")
    arrFolderPath = Split(arrpastas, "\")
    strNewPath = ""
    For i = 1 to Ubound(arrFolderPath)
        strNewPath = strNewPath & "\\" & arrFolderPath(i)
    Next
    strPath = strNewPath & "\\"
     
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where Path = '" & strPath & "'")

    For Each objFile in colFiles
        Wscript.Echo objFile.Name
    Next

    For Each objFolder in colSubfolders
        GetSubFolders arrpastas
    Next

    Sub GetSubFolders(arrpastas)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & arrpastas & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")

        For Each objFolder2 in colSubfolders2
            arrpastas = objFolder2.Name
            arrFolderPath = Split(arrpastas, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")

            For Each objFile in colFiles
                strfilevbox = strfilevbox & objFile.Name & " ; "
            Next
           
    WScript.Echo strfilevbox

            GetSubFolders arrpastas
        Next
    End Sub

    quarta-feira, 21 de março de 2012 15:23
  • Algum amigo consegue me ajudar tche.

    obrigado.

    sexta-feira, 23 de março de 2012 16:30
  • Marcelo,

    Fiz algumas modificações naquele código que indiquei.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    
    
    DIM strListaArquivos
    call GeraLista("C:\Users\"& struser &" \VirtualBox VMs","vdi,vhd")
    call geralista("c:\Users\"& struser &"\Virtual Machines","vdi,vhd")
    
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    	'numero de items do array
    	N_Items = 0
    	Dim arrLista(0)
    	
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(objFile.extension,strExtensoes) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName
    	Next
    end function
    	
    Function GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(objFile.extension,strExtensoes) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName
        Next
    End Function
    


    Fábio de Paula Junior

    sexta-feira, 23 de março de 2012 18:39
    Moderador
  • Ba grande Fabio.

    Meu amigo esta dando erro na linha 52 Column 1 Erro null esta linha é:

     For Each objFolder in colSubfolders
      GetSubFolders strFolderName

    sexta-feira, 23 de março de 2012 19:38
  • Tenta este:

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & " \VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")
    
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    
    	SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
    
    	IF not objFSO.FolderExists(strFolderName) THEN exit function
    
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(objFile.extension,strExtensoes) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName
    	Next
    end function
    	
    Function GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(objFile.extension,strExtensoes) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName
        Next
    End Function
    


    Fábio de Paula Junior

    sexta-feira, 23 de março de 2012 20:13
    Moderador
  • Show Fabião mais aquele lançe tche para deixar em uma linha só nao esta rolando.

    la na linha 79 e 80

        strListaArquivos= strListaArquivos & objFile.Name & ";"
        Wscript.Echo strListaArquivos

    sexta-feira, 23 de março de 2012 20:57
  • Comente ou apague a linha: 

    Wscript.Echo objFile.Name 

    são em dois lugares do script, havia deixado só para teste.


    Fábio de Paula Junior

    sexta-feira, 23 de março de 2012 23:24
    Moderador
  • Ba Fabião

    Tirei os echo e ele continuo escrevendo mais que uma linha, ai tirei o ultimo echo e joguei depois do next ai ele continuou escrevendo mais que uma linha tb mais antes do next ele escrevia 6 linhas depois do next ele passou a escrever 4, e no resultado vejo que ele esta trazendo mais informação ou seja ele nao esta trazendo somenete o vhd e o vdi tche, ele ta trazendo todos os arquivos encontrados.

    o codigo ficou assim tche.

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

    Set objNetSID = CreateObject("WScript.NetWork")
    struser = objNetSID.UserName

    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & "\VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")

    ' --------------------------
    '  funções
    ' --------------------------

    Function GeraLista(strFolderName,strExtensoes)

     SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")

     IF not objFSO.FolderExists(strFolderName) THEN exit function

     Set colSubfolders = objWMIService.ExecQuery _
      ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
       & "Where AssocClass = Win32_Subdirectory " _
        & "ResultRole = PartComponent")

     arrFolderPath = Split(strFolderName, "\")
     strNewPath = ""
     For i = 1 to Ubound(arrFolderPath)
      strNewPath = strNewPath & "\\" & arrFolderPath(i)
     Next
     strPath = strNewPath & "\\"
     
     Set colFiles = objWMIService.ExecQuery _
      ("Select * from CIM_DataFile where Path = '" & strPath & "'")

     For Each objFile in colFiles
      'MODIFICAÇÃO IMPORTANTE
      if instr(objFile.extension,strExtensoes) then
       strListaArquivos=strListaArquivos & objFile.Name & ";"
      end if
     Next

     For Each objFolder in colSubfolders
      GetSubFolders strFolderName
     Next
    end function
     
    Function GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")

        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")

            For Each objFile in colFiles
       'MODIFICAÇÃO IMPORTANTE
       if instr(objFile.extension,strExtensoes) then
        strListaArquivos= strListaArquivos & objFile.Name & ";"
         'objFile.Name
       END If
      Next
       Wscript.Echo strListaArquivos

            GetSubFolders strFolderName
        Next
    End Function

    segunda-feira, 26 de março de 2012 09:34
  • Tinha um parametro invertido

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & "\VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")
    
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    
    	SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
    
    	IF not objFSO.FolderExists(strFolderName) THEN exit function
    
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(strExtensoes,objFile.extension) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			'Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName
    	Next
    end function
    	
    Function GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(strExtensoes,objFile.extension) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				'Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName
        Next
    End Function


    Fábio de Paula Junior

    segunda-feira, 26 de março de 2012 12:26
    Moderador
  • Ba Fabião, esta forma não é apresentado resultado nenhum tche.
    segunda-feira, 26 de março de 2012 13:43
  • Pode ser que o parametro está em minuscula e a extensão do arquivo em maiuscula(ou ao contrário).

    Adicionei a função UCASE, deve resolver.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & "\VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")
    
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    
    	SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
    
    	IF not objFSO.FolderExists(strFolderName) THEN exit function
    
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			'Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName
    	Next
    end function
    	
    Function GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				'Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName
        Next
    End Function


    Fábio de Paula Junior

    segunda-feira, 26 de março de 2012 13:48
    Moderador
  • Ba Fabio hehe ainda retornou em branco tche.
    segunda-feira, 26 de março de 2012 14:06
  • Versão 99.9, não estava passando strExtensoes para dentro de uma função.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objNetSID = CreateObject("WScript.NetWork") 
    struser = objNetSID.UserName
    
    DIM strListaArquivos
    call GeraLista("C:\Users\" & struser & "\VirtualBox VMs","vdi,vhd")
    call geralista("C:\Users\" & struser & "\Virtual Machines","vdi,vhd")
    'call geralista("C:\Temp","vdi,vhd")
    
    'Neste ponto a variavel strListaArquivos 
    'contém os arquivos que vc procura
    wscript.echo strListaArquivos
    
    ' --------------------------
    '		funções
    ' --------------------------
    
    Function GeraLista(strFolderName,strExtensoes)
    
    	SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
    
    	IF not objFSO.FolderExists(strFolderName) THEN exit function
    
    	Set colSubfolders = objWMIService.ExecQuery _
    		("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
    			& "Where AssocClass = Win32_Subdirectory " _
    				& "ResultRole = PartComponent")
    
    	'Wscript.Echo strFolderName
    
    	arrFolderPath = Split(strFolderName, "\")
    	strNewPath = ""
    	For i = 1 to Ubound(arrFolderPath)
    		strNewPath = strNewPath & "\\" & arrFolderPath(i)
    	Next
    	strPath = strNewPath & "\\"
    	 
    	Set colFiles = objWMIService.ExecQuery _
    		("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
    	For Each objFile in colFiles
    		'MODIFICAÇÃO IMPORTANTE
    		if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    			strListaArquivos=strListaArquivos & objFile.Name & ";"
    			'Wscript.Echo objFile.Name 
    		end if
    	Next
    
    	For Each objFolder in colSubfolders
    		GetSubFolders strFolderName,strExtensoes
    	Next
    end function
    	
    Function GetSubFolders(strFolderName,strExtensoes)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
    
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
    
            For Each objFile in colFiles
    			'MODIFICAÇÃO IMPORTANTE
    			if instr(ucase(strExtensoes),ucase(objFile.extension)) then
    				strListaArquivos=strListaArquivos & objFile.Name & ";"
    				'Wscript.Echo objFile.Name 
    			END IF
            Next
    
            GetSubFolders strFolderName,strExtensoes
        Next
    End Function


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 26 de março de 2012 17:55
    segunda-feira, 26 de março de 2012 15:20
    Moderador
  • Ba tche a versão 99.9 ficou trilegal hehehe

    Obrigado Fabião.

    segunda-feira, 26 de março de 2012 17:56