none
Script para alterar conteúdo de um arquivos RRS feed

  • 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/
    quarta-feira, 16 de fevereiro de 2011 15:54

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
    quarta-feira, 22 de junho de 2011 19:30
    Moderador

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
    sexta-feira, 17 de junho de 2011 16:20
    Moderador
  • Boa tarde!

     

    Fabio,

     

    Quando executo o vbs que vc envio somente é subtituido o <Event>  com o resto não acontece nada.


    Ed Carlos Marinho MCP/MCSA/MCTS(Win 7) ITILF V.2 http://edmarinho.spaces.live.com/
    segunda-feira, 20 de junho de 2011 16:44
  • 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 virgula

     objFile_Novo.writeline linhanova

    Loop

    objFile_Original.Close
    objFile_Novo.Close

    objFSO.Deletefile strArquivo_Original
    objFSO.MoveFile strArquivo_Novo , strArquivo_Original

     


    Rafael Paraná
    segunda-feira, 20 de junho de 2011 19:02
  • 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
    quarta-feira, 22 de junho de 2011 19:30
    Moderador
  • Eu tentei excluir o "\" mas não funcionou, tem alguma outra forma para deletar ela?
    • Editado Renato19 quarta-feira, 20 de março de 2019 19:22
    quarta-feira, 20 de março de 2019 19:21