none
Abrir um arquivo txt ou html com o notepad pelo VB.NET 2005 RRS feed

  • Pergunta

  • Ae pessoal

    Gostaria de saber se tem como eu abrir um documento HTML com o notepad ou WordPad pelo VB.NET 2005 e conseguir alterá-lo, via programação. Seria algo do tipo:

    if Documento.Contains ("String a ser encontrada") Then

    ...
    End If


    algo desse tipo



    Desde já, Obrigado
    Paulo Eduardo Bueno



    terça-feira, 29 de julho de 2008 13:39

Respostas

  • então cara, acabei de arrumar com o VB.NET mesmo, o código ficou mais ou menos assim:

    Code Snippet

        Dim pasta As String = "C:\minha pasta\"   

            Dim codFonte As String = ""
            Dim objArquivos As New System.IO.DirectoryInfo(pasta)
            Dim obj As New System.IO.FileInfo(pasta)
          

     For Each obj In objArquivos.GetFiles

                If obj.Extension = ".html" Then
                    Dim objReader As New System.IO.StreamReader(obj.FullName, System.Text.Encoding.Default)
                 
      Do
                        codFonte = codFonte & objReader.ReadLine & vbCrLf
      Loop Until objReader.ReadLine Is Nothing
                    TextBox1.Text = codFonte
                    If TextBox1.Text.Contains("wmv") Then
                        Dim EnderecoVideoAux As String
                        Dim EnderecoVideoFull As String
                        Dim NomeVideoAux As String
                        Dim NomeVideoFull As String
                        EnderecoVideoAux = Mid(TextBox1.Text, InStr(TextBox1.Text, "http://link onde esta o que eu quero")) 'Coloco aqui a href que eu quero mudar
                        EnderecoVideoFull = Mid(EnderecoVideoAux, 1, InStr(EnderecoVideoAux, "wmv") + 3)

                        NomeVideoAux = Mid(EnderecoVideoFull, InStrRev(EnderecoVideoFull, "video=") + 6)
                        NomeVideoFull = "///C:/Vídeos/" & NomeVideoAux
                        If TextBox1.Text.Contains(EnderecoVideoFull) Then
                            TextBox1.Text = Replace(TextBox1.Text, EnderecoVideoFull, NomeVideoFull)
                        End If
                    End If                 'TextBox1.Text = objReader.ReadToEnd
                    objReader.Close()
                Else
                    Continue For
                End If
        Next




    Agora eu vou implementar para ele fazer a verificação se é "wmv", direto quando estiver importando linha a linha





    De qualquer forma,
    Obrigado


    quarta-feira, 30 de julho de 2008 14:54

Todas as Respostas

  • Abrir um documento no notepad é fácil:

    Shell("NotePad.Exe ""C:\teste.txt""")

    Mas não faz muito sentido você usar um programa tão tosko quanto notepad para alterar um documento sendo que você tem a melhor linguagem do planeta para tratamento de strings na tua mão O.o

    O que exatamente você quer fazer? Alterar um documento texto ou HTML em VB é absurdamente fácil... E nem precisa apelar para notepad ou wordpad.
    terça-feira, 29 de julho de 2008 19:36
  • Opa JCKödel, então cara, é exatamente isso que eu to precisando, tratamento de Strings, bom, vamos lá:


    Eu tenho um diretórios com milhares de páginas HTML, preciso alterar o fonte dessas páginas HTML onde eu tenho uma tag "href" para direcionar para outro local, como esse local é padrão, e essas páginas HTML onde tem o "também" é padrão, eu precisava fazer isso em um loop para percorrer o diretório inteiro e ir dando o Replace no arquivo

    Bom, consegui fazer o tratamento, consegui identificar qual parte que quero dar o Replace e estou utilizando o System.IO




    Agora, meus problemas:
    -Observe essa declaração:
           
    Dim arquivo As String = "C:\Minha Pasta\Minha SubPasta\Cópia de ultimatebb0a0a-3.html" 'Isso funciona
    Dim pasta As String = "C:\Jiu-jitsu\jiu-jitsu.net\board"
    'Isso funciona
              Dim str As String
              Dim codFonte As String = ""

    Dim objArquivos As New System.IO.DirectoryInfo(pasta) 'Isso Funciona

            Dim objReader As New System.IO.StreamReader(objArquivos.FullName, System.Text.Encoding.Default)           'isso não funciona




    Quando eu chego no ObjReader, o VB acusa um erro de "access to the path is denied" ou seja, o acesso ao caminho não é autorizado.


    Já tentei ir na pasta retirar o Atributo "Somente Leitura" dela, mas, quando entro denovo, o Atributo está marcado denovo
    O engraçado é que, mais pra frente na aplicação, quando eu fazia testes con um único arquivo ("Dim arquivo as String...") ele funcionava perfeitamente, não acusava acesso negado, mas quando eu mando uma pasta inteira, ele acusa. Eu preciso da pasta inteira porque preciso percorrê - la para renomear todos os arquivos.





    Desde já,
    Obrigado pela ajuda



    Paulo Eduardo Bueno



    quarta-feira, 30 de julho de 2008 13:46
  • Pra ficar mais fácil, vamos usar o modo de compatibilidade com BASIC:

    Code Snippet

    Module Module1

    Sub Main()
    Dim File As String = Dir$("C:\Pasta Antiga\*.htm")

    Do
    Console.WriteLine("Processando arquivo " + File + "...")

    Dim FR As Integer = FreeFile()

    FileOpen(FR, "C:\Pasta Antiga\" + File, OpenMode.Input, OpenAccess.Read, OpenShare.LockWrite)

    Dim FW As Integer = FreeFile()

    FileOpen(FW, "C:\Pasta Nova\" + File, OpenMode.Output, OpenAccess.Write, OpenShare.LockReadWrite)

    While Not EOF(FR)
    PrintLine(FW, Replace(LineInput(FR), "TextoAntigo", "NovoTexto", Compare:=CompareMethod.Text))
    End While

    FileClose(FW)
    FileClose(FR)
    File = Dir$()
    Loop Until File = String.Empty
    End Sub

    End Module


    quarta-feira, 30 de julho de 2008 14:09
  • então cara, acabei de arrumar com o VB.NET mesmo, o código ficou mais ou menos assim:

    Code Snippet

        Dim pasta As String = "C:\minha pasta\"   

            Dim codFonte As String = ""
            Dim objArquivos As New System.IO.DirectoryInfo(pasta)
            Dim obj As New System.IO.FileInfo(pasta)
          

     For Each obj In objArquivos.GetFiles

                If obj.Extension = ".html" Then
                    Dim objReader As New System.IO.StreamReader(obj.FullName, System.Text.Encoding.Default)
                 
      Do
                        codFonte = codFonte & objReader.ReadLine & vbCrLf
      Loop Until objReader.ReadLine Is Nothing
                    TextBox1.Text = codFonte
                    If TextBox1.Text.Contains("wmv") Then
                        Dim EnderecoVideoAux As String
                        Dim EnderecoVideoFull As String
                        Dim NomeVideoAux As String
                        Dim NomeVideoFull As String
                        EnderecoVideoAux = Mid(TextBox1.Text, InStr(TextBox1.Text, "http://link onde esta o que eu quero")) 'Coloco aqui a href que eu quero mudar
                        EnderecoVideoFull = Mid(EnderecoVideoAux, 1, InStr(EnderecoVideoAux, "wmv") + 3)

                        NomeVideoAux = Mid(EnderecoVideoFull, InStrRev(EnderecoVideoFull, "video=") + 6)
                        NomeVideoFull = "///C:/Vídeos/" & NomeVideoAux
                        If TextBox1.Text.Contains(EnderecoVideoFull) Then
                            TextBox1.Text = Replace(TextBox1.Text, EnderecoVideoFull, NomeVideoFull)
                        End If
                    End If                 'TextBox1.Text = objReader.ReadToEnd
                    objReader.Close()
                Else
                    Continue For
                End If
        Next




    Agora eu vou implementar para ele fazer a verificação se é "wmv", direto quando estiver importando linha a linha





    De qualquer forma,
    Obrigado


    quarta-feira, 30 de julho de 2008 14:54