Usuário com melhor resposta
Comando replace em linhas que não contenham determinado valor

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
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/
A 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
Todas as Respostas
-
-
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- Editado Bernardes_farma segunda-feira, 9 de março de 2015 13:53
-
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
-
-
-
-
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/
A 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
-