• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 452
  • Last Modified:

VB Code write cmd.exe to file

I have a process that works.

On a button click it (WIth hidden widnow)
Runs cmd.exe
executes a java command
The cmd.exe is using an append to file with > myfile.txt

The process runs...opens a connection to my vendor and starts receiving the inbound data

Now this is an open connection so as long as this runs I will get a continuous stream of telephone data on our network.
(No...I don't work for the NSA...LOL)

I allso have a process.kill() command.

WHat I want is for this to continuously append to the file

BUt it looks like the file isn't written until I kill the process?
Is that the way it works?  

I really need it going into the file in an ongoing manner

This is what is running
    Private Sub btnProcessStart_Click(sender As System.Object, e As System.EventArgs) Handles btnProcessStart.Click
        ' New ProcessStartInfo created
        Dim p As New ProcessStartInfo

        ' Specify the location of the binary
        p.FileName = "cmd.exe"
        p.WorkingDirectory = "C:\Program Files (x86)\Java\jre7\bin\"

        ' Use these arguments for the process
        p.Arguments = "/c java -cp m5.jar;m5-data-objects.jar;webservices-rt.jar;log4j-1.2.13.jar > C:\temp\Output3.txt"

        ' Use a hidden window
        p.WindowStyle = ProcessWindowStyle.Hidden

        ' Start the process
        Process.Start(p)

        Dim intResponse As Integer
        intResponse = MsgBox("End?", vbYesNoCancel, "Alert")
        If intResponse = vbYes Then
            For Each jr In Process.GetProcessesByName("Java")
                Try
                    
                    jr.Kill()
                
                Catch
                
                End Try
           
            Next
        End If
    End Sub

Open in new window

0
Larry Brister
Asked:
Larry Brister
  • 2
  • 2
  • 2
  • +1
2 Solutions
 
Meir RivkinFull stack Software EngineerCommented:
where's the code that writes to the file?
whats data do u wanna write to a file?
0
 
CodeCruiserCommented:
Do not use >filename approach and redirect standard output instead as shown here

http://stackoverflow.com/questions/206323/how-to-execute-command-line-in-c-get-std-out-results

but instead of readtoend, use a while loop and do readline which should get you every line of cmd output
0
 
Larry Bristersr. DeveloperAuthor Commented:
CodeCruiser

On the StackFlow site...
Which of those solutions should I be using? I see 9 answers
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
angus_young_acdcCommented:
The first one.

And the alteration will be something like this:

            // Start the child process.
            Process p = new Process();
            // Redirect the output stream of the child process.
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "YOURBATCHFILE.bat";
            p.Start();
            // Do not wait for the child process to exit before
            // reading to the end of its redirected stream.
            // p.WaitForExit();
            // Read the output stream first and then wait.
            string output = p.StandardOutput.ReadLine();
            string line = string.Empty;
            while ((line = p.StandardOutput.ReadLine()) != null)
            {
                output = line;
            }
            p.WaitForExit();

Open in new window

0
 
angus_young_acdcCommented:
Sorry it's for VB!

        Dim p As New Process()
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "YOURBATCHFILE.bat"
        p.Start()

        Dim output As String
        Dim line As String

        While ((line = p.StandardOutput.ReadLine()) != Nothing)
            output = line
        End While
        p.WaitForExit()

Open in new window

0
 
CodeCruiserCommented:
The one with green tick is the one selection as final answer and is usually at the top of answers.
0
 
Larry Bristersr. DeveloperAuthor Commented:
CodeCruiser
As always...thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 2
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now