?
Solved

Commandline output to Windows Program

Posted on 2008-10-19
11
Medium Priority
?
355 Views
Last Modified: 2013-12-17
Dear Experts,

I have a command line program which when run, outputs something like this from cmd:

version;3
active;1
interface;eth0
nick;eth0
created;1224363832
updated;1224407701
totalrx;622
totaltx;198
currx;24485590
curtx;1987530
...
and it goes on

How do I capture the value after "totalrx" and display it in a textbox?

Please help.
0
Comment
Question by:narmi2
  • 6
  • 4
11 Comments
 
LVL 3

Expert Comment

by:ddanonimity
ID: 22751539
try this

StreamReader lo_reader = new StreamReader(@#FILE#);
lo_reader.open();
while(!lo_reader.EndOfStream)
{
string ls_input = lo_reader.ReadLine();
      if(ls_input.Contains("totalrx")
      {
            ls_input = ls_input.Replace("totalrx;");
            textbox1.Text = ls_input
      }
}
lo_reader.close();

if you want to display the totalrx before it just remove the replace line. and remember to include the
#include System.IO;
at the top.

have done it quite quickly so you'll have to substitue your names in and beware of caps I might have missed.
0
 
LVL 1

Author Comment

by:narmi2
ID: 22751554
Is this code reading text from a file?
0
 
LVL 1

Author Comment

by:narmi2
ID: 22751575
so far I have this which captures everything and sticks it into a textbox.  I don't know how to display totalrx in the textbox alone?

      protected virtual void OnButton2Clicked (object sender, System.EventArgs e)
      {
            Process p = new Process();
            
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "the commandline program to run goes here";
            p.Start();
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            
            entry1.Text = output";
      }
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
LVL 64

Accepted Solution

by:
Fernando Soto earned 2000 total points
ID: 22752683
Hi narmi2;

You can use a Regular Expression to get the text for the textBox control as shown in the line below.

Fernando

using System.Text.RegularExpressions;
 
entry1.Text = Regex.Match(output, @"(?i)totalrx;(.*?)\r").Groups[1].Value;

Open in new window

0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 22752745
Hi narmi2;

The meaning of the Regex pattern, "(?i)totalrx;(.*?)\r", is as follows:

  1. (?i) - Tells Regex that the pattern that follows should be evaluated with case insensitive matching.
  2. totalrx; - Look for this sequence of characters in the string.
  3. (.*?)  - Group the next sequence of characters until the first character after the end group, ).
  4. \r - This is a return character and tells to group to stop grouping, in this case.
In this command, Regex.Match(output, @"(?i)totalrx;(.*?)\r").Groups[1].Value;, the Groups[1] tells Regex to return Group 1 the only group in this pattern and Value returns the string of the group.

Fernando
0
 
LVL 1

Author Comment

by:narmi2
ID: 22761880
For some reason the regex is not returning anything?

I tried this, but it's output was blank:

Console.WriteLine (Regex.Match(output, @"(?i)totalrx;(.*?)\r").Groups[1].Value);

If I do the following, it displays text like the text I posted in the original post:

Console.WriteLine (output);
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 22762279
Please post your code. I have tested this solution before posting.
0
 
LVL 1

Author Comment

by:narmi2
ID: 22764715
Here's the code:
using System;
using System.Diagnostics;
using System.Text.RegularExpressions;
 
namespace test_console
{
	class MainClass
	{
		public static void Main(string[] args)
		{
                 ProcessStartInfo psi = new ProcessStartInfo ();
                 psi.FileName = "command to execute goes here";
                 psi.Arguments = "optional argument goes here";
                 psi.RedirectStandardOutput = true;
                 psi.UseShellExecute = false;
 
                 Process p =  Process.Start (psi);
                 string ret = p.StandardOutput.ReadToEnd ();
 
                 p.WaitForExit ();
                 Console.WriteLine (Regex.Match(output, @"(?i)totalrx;(.*?)\r").Groups[1].Value);
		}
	}
}

Open in new window

0
 
LVL 1

Author Comment

by:narmi2
ID: 22764721
Please ignore the copy/past error, the line:
Console.WriteLine (Regex.Match(output, @"(?i)totalrx;(.*?)\r").Groups[1].Value);

Should have been:
Console.WriteLine (Regex.Match(ret, @"(?i)totalrx;(.*?)\r").Groups[1].Value);
0
 
LVL 1

Author Closing Comment

by:narmi2
ID: 31507544
Figured it out.  I am coding for Linux so instead of /r I hade to use /n
Thanks for all the help.
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 22767123
Yes you are correct files created on Unix type machine do use different line terminators.

Not a problem, glad I was able to help. ;=)
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
Enter Foreign and Special Characters Enter characters you can't find on a keyboard using its ASCII code ... and learn how to make a handy reference for yourself using Excel ~ Use these codes in any Windows application! ... whether it is a Micr…
How to fix display issue, screen flickering issue when I plug in power cord to the machine. Before I start explaining the solution lets check out once the issue how it looks like after I connect the power cord. most of you also have faced this…
Suggested Courses
Course of the Month8 days, 11 hours left to enroll

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question