none
Comando replace em linhas que não contenham determinado valor RRS feed

  • Pergunta

  • Preciso que o replace seja feito apenas nas linhas que nao contenham os valores "user3". Mas esta dando erro na codificação. Acho q na linha If Not InSt... Como resolvo?


    TXT Original

    049483930484059vxf        user1      Consultoria
    049483930484060vxf        user2      Consultoria
    049483930484061vxf        user3      Farmácia
    049483930484062vxf        user2      Consultoria
    049483930484063vxf        user3      Farmácia
    049483930484064vxf        user3      Farmácia
    049483930484065vxf        user1      Consultoria

    Como gostaria que ficasse

    049483930484059vxf        user1      cancelado
    049483930484060vxf        user2      cancelado
    049483930484061vxf        user3      Farmácia
    049483930484062vxf        user2      cancelado
    049483930484063vxf        user3      Farmácia
    049483930484064vxf        user3      Farmácia
    049483930484065vxf        user1      cancelado

    - vbs
    strArquivo_Original = "dados.txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile_Original = objFSO.OpenTextFile(strArquivo_Original, 1)
    Set objFile_Novo = objFSO.CreateTextFile("i_f.txt")


    Text1="Farmácia"
    Text2="Consultoria"


    Do Until objFile_Original.AtEndOfStream

    If Not InStr(linhanova,"user3") Then
     linhanova=objFile_Original.ReadLine
     linhanova = replace(linhanova,Text1,"cancelado")
     linhanova = replace(linhanova,Text2,"cancelado")
       End If

     objFile_Novo.writeline linhanova

    Loop

    objFile_Original.Close
    objFile_Novo.Close

    segunda-feira, 9 de março de 2015 13:44

Respostas

  • Efetuei algumas correções e agora esta funcionando:

    Segue
    strArquivo_Original = "dados.txt"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile_Original = objFSO.OpenTextFile(strArquivo_Original, 1)
    Set objFile_Novo = objFSO.CreateTextFile("i_f.txt")
    
    
    Text1="Farmácia"
    Text2="Consultoria"
    
    
    Do Until objFile_Original.AtEndOfStream
    linhanova =objFile_Original.ReadLine 
    
    If Not InStr(linhanova,"user3")>0 Then
     
     linhanova = replace(linhanova,Text1,"cancelado")
     linhanova = replace(linhanova,Text2,"cancelado")
    End If
    
     objFile_Novo.writeline linhanova
    
    Loop
    
    objFile_Original.Close
    objFile_Novo.Close
    Para testar esses scripts como editar e debugar você pode usar esse programinha (pago) mais pode usar o trial o unico incomodo so vai ser quando compilar: http://www.vbsedit.com/


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT segunda-feira, 9 de março de 2015 18:03
    • Sugerido como Resposta Mr. GMSOFT segunda-feira, 9 de março de 2015 18:04
    • Marcado como Resposta Bernardes_farma terça-feira, 10 de março de 2015 15:50
    segunda-feira, 9 de março de 2015 17:44

Todas as Respostas

  • Posta a mensagem do erro exatamente como aparece e em que linha ocorre

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 9 de março de 2015 13:46
  • Mr GmSoft,

    Na verdade ele não funciona, altera todo o arquivo sem perceber as linhas com o valor a não ser alterado.
    Eh como se o If not Instr não fizesse diferença.

    O texto fica assim:

    049483930484059vxf        user1      cancelado
    049483930484060vxf        user2      cancelado
    049483930484061vxf        user3      cancelado
    049483930484062vxf        user2      cancelado
    049483930484063vxf        user3      cancelado
    049483930484064vxf        user3      cancelado
    049483930484065vxf        user1      cancelado

    segunda-feira, 9 de março de 2015 13:52
  • Nesse trecho do codigo ele esta procurando os que não tem o user3, não seria ao contratio,somente substituir o que tiver user3?

    If Not InStr(linhanova,"user3") Then
     linhanova=objFile_Original.ReadLine
     linhanova = replace(linhanova,Text1,"cancelado")
     linhanova = replace(linhanova,Text2,"cancelado")
       End If


    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 9 de março de 2015 13:53
  • Mr GmSoft,

    Seria isso mesmo, ele tem q alterar somente as linha que não contenham o 'user3'...
    Entretanto ele está alterando o arquivo completamente, gerando aquele txt q postei anteriormente.

    segunda-feira, 9 de março de 2015 15:17
  • Mr GmSoft,

    Seria isso mesmo, ele tem q alterar somente as linha que não contenham o 'user3'...
    Entretanto ele está alterando o arquivo completamente, gerando aquele txt q postei anteriormente.

    segunda-feira, 9 de março de 2015 15:22
  • Há agora olhando direito que vi, é VB Script

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 9 de março de 2015 16:36
  • Efetuei algumas correções e agora esta funcionando:

    Segue
    strArquivo_Original = "dados.txt"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile_Original = objFSO.OpenTextFile(strArquivo_Original, 1)
    Set objFile_Novo = objFSO.CreateTextFile("i_f.txt")
    
    
    Text1="Farmácia"
    Text2="Consultoria"
    
    
    Do Until objFile_Original.AtEndOfStream
    linhanova =objFile_Original.ReadLine 
    
    If Not InStr(linhanova,"user3")>0 Then
     
     linhanova = replace(linhanova,Text1,"cancelado")
     linhanova = replace(linhanova,Text2,"cancelado")
    End If
    
     objFile_Novo.writeline linhanova
    
    Loop
    
    objFile_Original.Close
    objFile_Novo.Close
    Para testar esses scripts como editar e debugar você pode usar esse programinha (pago) mais pode usar o trial o unico incomodo so vai ser quando compilar: http://www.vbsedit.com/


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT segunda-feira, 9 de março de 2015 18:03
    • Sugerido como Resposta Mr. GMSOFT segunda-feira, 9 de março de 2015 18:04
    • Marcado como Resposta Bernardes_farma terça-feira, 10 de março de 2015 15:50
    segunda-feira, 9 de março de 2015 17:44
  • Meu amigo, mto obrigado pela correção e pela dica do debug, funcionou perfeito.

    Abraços

    terça-feira, 10 de março de 2015 15:50