Usuário com melhor resposta
Abrir um arquivo txt ou html com o notepad pelo VB.NET 2005

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
Respostas
-
então cara, acabei de arrumar com o VB.NET mesmo, o código ficou mais ou menos assim:
Code SnippetDim 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)
DocodFonte = codFonte & objReader.ReadLine & vbCrLfLoop Until objReader.ReadLine Is NothingTextBox1.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 mudarEnderecoVideoFull = 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
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. -
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 funcionaDim str As String
Dim pasta As String = "C:\Jiu-jitsu\jiu-jitsu.net\board" 'Isso funciona
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 -
Pra ficar mais fácil, vamos usar o modo de compatibilidade com BASIC:
Code SnippetModule 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 -
então cara, acabei de arrumar com o VB.NET mesmo, o código ficou mais ou menos assim:
Code SnippetDim 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)
DocodFonte = codFonte & objReader.ReadLine & vbCrLfLoop Until objReader.ReadLine Is NothingTextBox1.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 mudarEnderecoVideoFull = 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