Usuário com melhor resposta
Script para alterar conteúdo de um arquivos

Pergunta
-
Ola!
Como crio um arquivos que procure por uma palavra ou texto e coloque virgula no local ou apague o mesmo?
Por exemplo:
Tenho o seguinte conteúdo em um arquivo .txt:
<Event><Timestamp data_type="4">02/13/2011 11:52:50.654</Timestamp><Computer-Name data_type="1">Nome_do_computador</Computer-Name>
Quero que onde tiver <Event> e <Timestamp data_type="4"> os mesmos sejam apagados.
E onde tiver </Timestamp> seja colocado uma virgula.
Att,
Ed Carlos Marinho MCP/MCSA/MCTS(Win 7) ITILF V.2 http://edmarinho.spaces.live.com/
Respostas
-
Ed,
Conforme o Rafael corrigiu existia uma concatenação desnecessária no meu script, segue a correção (também modifique a leitura do arquivo) e um exemplo em powershell.
.vbs
strArquivo_Original = "arquivo1.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strArquivo_Original, 1, false) Text1="<Event>" Text2="<Timestamp data_type=""4"">" Text3="</Timestamp>" If objFile.AtEndOfStream Then ReadAllTextFile = "" Else ReadAllTextFile = objFile.ReadAll End If objFile.close ReadAllTextFile = replace(ReadAllTextFile,Text1,"") 'substitui por "" ReadAllTextFile = replace(ReadAllTextFile,Text2,"") 'substitui por "" ReadAllTextFile = replace(ReadAllTextFile,Text3,",")'substitui por virgula Set objFile = objFSO.OpenTextFile(strArquivo_Original, 2, true) objFile.write ReadAllTextFile objFile.close
.ps1$Arquivo=".\arquivo1.txt" #Carrega conteudo do arquivo na variavel $Novo $Novo = (Get-Content $Arquivo) #Faz substituições $Novo = $Novo | Foreach-Object {$_ -replace "<Event>",""} $Novo = $Novo | Foreach-Object {$_ -replace '<Timestamp data_type="4">',""} $Novo = $Novo | Foreach-Object {$_ -replace "</Timestamp>",","} #Grava substituições $Novo | Set-Content ($Arquivo)
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator terça-feira, 28 de junho de 2011 18:13
- Marcado como Resposta Fábio JrModerator sábado, 3 de dezembro de 2011 13:05
Todas as Respostas
-
Utilize o comando REPLACE (.vbs).
strArquivo_Original = "arquivo_original.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile_Original = objFSO.OpenTextFile(strArquivo_Original, 1) Set objFile_Novo = objFSO.CreateTextFile("temp.txt") Do Until objFile_Original.AtEndOfStream strLinha = objFile_Original.ReadLine linhanova="" linhanova = replace(strLinha,"<Event>","") 'substitui por "" linhanova = linhanova & replace(strLinhanova,"<Timestamp data_type="4">","") 'substitui por "" linhanova = linhanova & replace(strLinhanova,"</Timestamp>",",") 'substitui por virgula objFile_Novo.writeline linhanova Loop objFile_Original.Close objFile_Novo.Close objFSO.Deletefile strArquivo_Original objFSO.MoveFile strArquivo_Novo , strArquivo_Original
Fábio de Paula Junior -
-
Tente assim:
strArquivo_Original = "arquivo1.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile_Original = objFSO.OpenTextFile(strArquivo_Original, 1)
Set objFile_Novo = objFSO.CreateTextFile("temp.txt")
Text1="<Event>"
Text2="<Timestamp data_type=""4"">"
Text3="</Timestamp>"Do Until objFile_Original.AtEndOfStream
linhanova=objFile_Original.ReadLine
linhanova = replace(linhanova, Text1,"") 'substitui por ""
linhanova = replace(linhanova,Text2,"") 'substitui por ""
linhanova = replace(linhanova,Text3,",") 'substitui por virgulaobjFile_Novo.writeline linhanova
Loop
objFile_Original.Close
objFile_Novo.CloseobjFSO.Deletefile strArquivo_Original
objFSO.MoveFile strArquivo_Novo , strArquivo_Original
Rafael Paraná -
Ed,
Conforme o Rafael corrigiu existia uma concatenação desnecessária no meu script, segue a correção (também modifique a leitura do arquivo) e um exemplo em powershell.
.vbs
strArquivo_Original = "arquivo1.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strArquivo_Original, 1, false) Text1="<Event>" Text2="<Timestamp data_type=""4"">" Text3="</Timestamp>" If objFile.AtEndOfStream Then ReadAllTextFile = "" Else ReadAllTextFile = objFile.ReadAll End If objFile.close ReadAllTextFile = replace(ReadAllTextFile,Text1,"") 'substitui por "" ReadAllTextFile = replace(ReadAllTextFile,Text2,"") 'substitui por "" ReadAllTextFile = replace(ReadAllTextFile,Text3,",")'substitui por virgula Set objFile = objFSO.OpenTextFile(strArquivo_Original, 2, true) objFile.write ReadAllTextFile objFile.close
.ps1$Arquivo=".\arquivo1.txt" #Carrega conteudo do arquivo na variavel $Novo $Novo = (Get-Content $Arquivo) #Faz substituições $Novo = $Novo | Foreach-Object {$_ -replace "<Event>",""} $Novo = $Novo | Foreach-Object {$_ -replace '<Timestamp data_type="4">',""} $Novo = $Novo | Foreach-Object {$_ -replace "</Timestamp>",","} #Grava substituições $Novo | Set-Content ($Arquivo)
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator terça-feira, 28 de junho de 2011 18:13
- Marcado como Resposta Fábio JrModerator sábado, 3 de dezembro de 2011 13:05
-