Click to See Complete Forum and Search --> : Running a Batch File from a Command Window Launched from a C# Program


Complete
March 27th, 2008, 01:42 PM
I have been able to launch a batch file from a C# program in a number of ways.

Duncan Mackenzie's blog on msdn shows a number of ways how it can be done and I have tried them. (http://blogs.msdn.com/csharpfaq/archive/2004/06/01/146375.aspx).

But I have a unique problem. The batch file launches a program that seems to require that a command window (cmd) be open when it runs. Because of this, the batch file works if I launch it from a command line, but when I launch it in a C# program, an exception is thrown.

So my question is this. How can I open a cmd window from C# and feed it the command to run the batch routine?

There seems to be some sort of special block or prehibitation on running "CMD.EXE" from C#. I have tried a number of tricks. I have tried System.Diagnostics.Process.Start(@"cmd C:\bacthfile.bat"); but that did not work. I even tried the "start" command line argument which is supposed to launch a second command window. I did this by putting this command in one batch file to launch a second window. But both windows did not open when I did this from the C# program.

joe1985
March 27th, 2008, 08:25 PM
You should make a new process
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();

then define the process startinfo

myProcess.StartInfo.Argument = "whateverbatch.bat"

Its not that exactly, but I don't have VS installed on my new box. So, give that a shot. Oh yeah, and naturally you have to define any startinfo prior to starting.

dglienna
March 27th, 2008, 08:30 PM
Here's some vb6 code. the /c closes the window when the app finishes

Option Explicit

Private Sub Form_Load()
Shell ("C:\Windows\System32\cmd.exe /c " & _
"C:\Windows\System32\ipconfig >> d:\myip.txt"), vbNormalFocus
End Sub


The results are appended to a file on a different drive.

Arjay
March 27th, 2008, 09:36 PM
But I have a unique problem. The batch file launches a program that seems to require that a command window (cmd) be open when it runs. Because of this, the batch file works if I launch it from a command line, but when I launch it in a C# program, an exception is thrown.

So my question is this. How can I open a cmd window from C# and feed it the command to run the batch routine?

There seems to be some sort of special block or prehibitation on running "CMD.EXE" from C#. I have tried a number of tricks. I have tried System.Diagnostics.Process.Start(@"cmd C:\bacthfile.bat"); but that did not work. I even tried the "start" command line argument which is supposed to launch a second command window. I did this by putting this command in one batch file to launch a second window. But both windows did not open when I did this from the C# program.What is the exception? Wrap a try/catch( Exception e ) block around the Process Startup code. It may be something simple such as not finding cmd.exe.