pover
asked on
How to parse specific output in vb.net
I have the code working with the exception of it parsing only the output that I require. I'm having problems getting that to work. I'm wanting only the output to be the ip address within the brackets [xxx.xxx.xxx.xxx]
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If IO.File.Exists("C:\monitorlog.txt") Then
IO.File.Delete("C:\monitorlog.txt")
End If
Dim Writer As New IO.StreamWriter("C:\monitor.txt", True)
Dim item As Object
For Each item In ListBox1.Items
Dim machine As String = item.ToString
ProgressBar1.Maximum = ListBox1.Items.Count
ProgressBar1.Minimum = 0
If ProgressBar1.Value < ListBox1.Items.Count Then
ProgressBar1.Value = ProgressBar1.Value + 1
End If
Next
'Try
Dim si As New System.Diagnostics.ProcessStartInfo("cmd.exe")
'Dim p As Process
Dim x As String
'Dim item
Dim counter As Integer = 100 'you may need to play with this number to get it right for your system
Dim y(counter) As Char
Dim i As Integer
Try
Dim p As Process = New Process
Dim entirefile
Dim oread
p.StartInfo.Arguments = " " & item
'PrintDriverInfo.exe /S:MyServerName
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardInput = True
p.StartInfo.CreateNoWindow = True
p.StartInfo.UseShellExecute = False
p.StartInfo.FileName = "ping.exe"
p.Start()
Dim sr As IO.StreamReader = p.StandardOutput 'out is a streamreader
Dim sw As IO.StreamWriter = p.StandardInput 'inn is a streamwriter
For i = 0 To counter - 1
Next
While Not p.HasExited
End While
Dim s As String = sr.ReadToEnd()
If s <> "" Then
End If
If Not s Is Nothing Then
If s.StartsWith("Pinging") Then
Dim ip As String = s
If s.StartsWith("Pinging") Then
Dim u As Integer = s.IndexOf("[")
Dim r As Integer = s.IndexOf("]")
Dim q As Integer = s.IndexOf("]") - s.IndexOf("[")
s = s.Remove(u - r, s.Length - q)
WriteLog(s)
WriteLog(s)
p.Close()
End If
End If
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
ProgressBar1.Value = 0
Writer.Close()
'Start("C:\monitor.txt")
End Sub
ASKER
Are you suggesting I put
If s.StartsWith("Pinging")
Dim ip As String = [String].Format("\d{1,3}\. \d{1,3}\.\ d{1,3}")
?
If s.StartsWith("Pinging")
Dim ip As String = [String].Format("\d{1,3}\.
?
I'm not sure what the VB.Net code is exactly (a little rusty) but here is the C# of what I suggest.
using System.Text.RegularExpressions
private void FindMatches(string StringToFindMatches)
{
Regex myRegEx = new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}");
MatchCollection matches = myRegEx.FindMatches(StringToFindMatches);
//matches will now contain a list of all IP addresses found in the file.
}
ASKER
I changed the code to reflect to this but doesn't parse the data
If Not s Is Nothing Then
' If s.StartsWith("Pinging") Then
If True Then
Dim ip As String = s
Dim myRegEx As New Regex("\d{1,3}\.\d{1,3}\.\ d{1,3}")
Dim matches As MatchCollection = myRegEx.Matches(ip)
WriteLog(s)
It doesn't parse anything I checked with msgbox(s) to be sure.
I need it some way to parse the ip address which is in the brackets on a return ping.
Like you would see in a cmd shell pinging hostname hostname.whatever.whatever .com [xxx.xxx.xxx.xx] and have them appear in the Richtexbox that I have on the form.
Currently not just the ip in the brackets but everything else appears in the Richtextbox.
If Not s Is Nothing Then
' If s.StartsWith("Pinging") Then
If True Then
Dim ip As String = s
Dim myRegEx As New Regex("\d{1,3}\.\d{1,3}\.\
Dim matches As MatchCollection = myRegEx.Matches(ip)
WriteLog(s)
It doesn't parse anything I checked with msgbox(s) to be sure.
I need it some way to parse the ip address which is in the brackets on a return ping.
Like you would see in a cmd shell pinging hostname hostname.whatever.whatever
Currently not just the ip in the brackets but everything else appears in the Richtextbox.
did you check the matches object? It should contain the list of IP addresses that you want. If it is empty, then we need to refine the regex.
The matches would be in matches collection so matches(0) would contain the first match and so on.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Expression: "\d{1,3}\.\d{1,3}\.\d{1,3}