none
Ajudinha com um ForReading RRS feed

  • Pergunta

  • Ba galera

    O amigo Fabio me ajudou com um script no passado no qual ele localiza arquivos por extenção e depois efetuava a leitura de duas linhas nos arquivos encontrados, porem tive que fazer uma mudança para ele encontrasse duas palavras dentro dos arquivos encontrados e apresentasse o resultado tche, ate ai beleza mais estou tendo um problema com o ForReading, quando deixo ele ativo ele reclama da linha do ForReading informando a redefinição do nome 'ForReading'  code: 800A0411, quando tiro o ForReading, o display do resultado é apresentado mais quando ele encontra os dois arquivos no mesmo equipamento ele apresenta um display com o resultado do primeiro arquivo e depois um segundo display com o resuldado do primeiro mais o segundo, e eu gostaria que ele só apresentasse o resultado final ou seja o valor encontrado nos dois arquivos tche...

    No codigo abaixo o ForReading esta comentado.

    obrigado galera.

    strComputer = "."
    '----------------------------------------------------------
    'Definir caminho e extensão do arquivo
    
    arrPastas = array("\Program Files\Microsiga\","\Arquivos de Programas\Microsiga\")
    arrExtensoes = array("ldp","dpl")
    
    '---------------------------------------------------------     
    '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 & "; "
    
    'Const ForReading = 1
    
    Set objRegEx = CreateObject("VBScript.RegExp")
    If objFile.Extension ="ldp" Then objRegEx.Pattern = "Baseeng="
    If objFile.Extension ="dpl" Then objRegEx.Pattern = "Basebr="
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(objFile.name)', ForReading)
    
    Do Until objFile.AtEndOfStream
        strSearchString = objFile.ReadLine
        Set colMatches = objRegEx.Execute(strSearchString)  
        If colMatches.Count > 0 Then
            For Each strMatch in colMatches   
                strsiga = strsiga & strSearchString & " ; "
            Next
        End If
    Loop
    
    objFile.Close
    
    WScript.Echo strsiga
    
    Next 


    • Editado Marcelo TI terça-feira, 20 de março de 2012 14:14
    terça-feira, 20 de março de 2012 14:13

Respostas

  • Marcelo,

    Tira o Wscript.echo strsiga de dentro do loop, coloca esta linha no final do arquivo.

    Não entendi o problema com o ForReading, em qual linha ocorre o problema? Qual a descrição do erro?


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI terça-feira, 20 de março de 2012 18:44
    terça-feira, 20 de março de 2012 15:42
    Moderador

Todas as Respostas

  • Marcelo,

    Tira o Wscript.echo strsiga de dentro do loop, coloca esta linha no final do arquivo.

    Não entendi o problema com o ForReading, em qual linha ocorre o problema? Qual a descrição do erro?


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI terça-feira, 20 de março de 2012 18:44
    terça-feira, 20 de março de 2012 15:42
    Moderador
  • Ba Fabio

    colocando ele fora do loop o resultado é escrito correto tche... o erro do ForReading, ocorre na linha 45 e apresenta assim error: Redefinição do nome: 'ForReading' Code: 800A0411.

    terça-feira, 20 de março de 2012 16:05
  • Marcelo,

    Você postou todo o código?

    Este erro do ForReading me parece com algo como tentar criar uma constante com o nome de uma variavel que já existe.

    Tente fazer o seguinte: Renomeia a variavel na linha 45 (coloque o nome por exemplo: varForReading), e nas partes posteriores do script que utilizam o forreading faça a alteração também.


    Fábio de Paula Junior

    terça-feira, 20 de março de 2012 16:41
    Moderador
  • Fabio

    Sim foi todo o codigo.

    Colando com outro nome deu o mesmo erro, mais vc acha que sem ele e deixando o echo fora do loop vai dar algum erro no futuro. ?

    terça-feira, 20 de março de 2012 17:28
  • Cola o seu script como ficou depois da alteração.

    Fábio de Paula Junior

    terça-feira, 20 de março de 2012 17:37
    Moderador
  • Ficou assim Fabio.

    strComputer = "."
    '----------------------------------------------------------
    '
    Definir caminho e extensão do arquivo

    arrPastas
    = array("\Program Files\Microsiga\","\Arquivos de Programas\Microsiga\")
    arrExtensoes
    = array("ldp","dpl")

    '---------------------------------------------------------    
    '
    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 & "; "

    '
    Const ForReading = 1

    Set objRegEx = CreateObject("VBScript.RegExp")
    If objFile.Extension ="ldp" Then objRegEx.Pattern = "Baseeng="
    If objFile.Extension ="dpl" Then objRegEx.Pattern = "Basebr="

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(objFile.name)', ForReading)

    Do Until objFile.AtEndOfStream
        strSearchString = objFile.ReadLine
        Set colMatches = objRegEx.Execute(strSearchString) 
        If colMatches.Count > 0 Then
            For Each strMatch in colMatches  
                strsiga = strsiga & strSearchString & " ; "
            Next
        End If
    Loop

    objFile.Close

    Next

    WScript.Echo strsiga

    terça-feira, 20 de março de 2012 18:20
  • Não vejo problema no script da forma como ele está.

    Fábio de Paula Junior

    terça-feira, 20 de março de 2012 18:35
    Moderador
  • Ba Fabio obrigado tche.

    terça-feira, 20 de março de 2012 18:44