Hi,
I just tried your code and it works fine ( with a lil modification) for me,
the strOutput gets the right output. I'm pasting the code here and you check
it works for you or not. Make a new console application and past the code
there:
//--------------<code>
using System;
using System.Diagnostics;
using System.ComponentModel;
namespace ConsoleApplication1
{
class csomething
{
public static void Main()
{
csomething c = new csomething();
c.dosomething();
}
public void dosomething()
{
try
{
System.Diagnostics.Process MFGProc = new System.Diagnostics.Process();
MFGProc.StartInfo.FileName =
AppDomain.CurrentDomain.BaseDirectory+@"bat.bat"; //strMfgWorkDir +
strMfgBatFile;
MFGProc.StartInfo.WorkingDirectory =
AppDomain.CurrentDomain.BaseDirectory;
//@"D:\mycode\ConsoleApplication1\ConsoleApplication 1\bin";
MFGProc.StartInfo.UseShellExecute = false;
MFGProc.StartInfo.RedirectStandardError = true;
MFGProc.StartInfo.RedirectStandardOutput = true;
MFGProc.Start();
string strOutput = MFGProc.StandardOutput.ReadToEnd();
string strError = MFGProc.StandardError.ReadToEnd();
MFGProc.WaitForExit();
if (MFGProc.ExitCode == 0)
{
//Ok = true;
Console.Write("no problem");
}
else
{
//strErrorMsg = " Running failed. Description: " + strError;
Console.Write("some problem");
}
}
catch (Win32Exception e)
{
Console.Write("W32 Error:" + e.NativeErrorCode.ToString() + "." +
e.Message);
}
catch (Exception err)
{
// Process other errors here
Console.Write("RunMFGCimSession Other error. ErrorMessage: " +
err.Message);
}
}
}//class
}
//--------------</code>
make a batch file in your debug bin directory and name it bat.bat and use
notepad to add the "echo hello world" in it.
-Abubakar.
++==
P.S: when pasting your code for others to run, make sure its complete in a
way that anyone can just copy and past it in the editor and it would give
the output that your writing about. Your code had missing variables and
missing using statements. It takes time to change those things and chances
for your getting help reduces. So always submit the complete working code.
Plz read this link
http://www.pobox.com/~skeet/csharp/complete.html
-Thanks
"Nurit N" <Nu****@sitqad.co.il> wrote in message
news:eh*************@TK2MSFTNGP12.phx.gbl...
This is the third newsgroup that I'm posting my problem.
I'm sorry for the multiple posts but the matter becoming urgent.
I hope this is the right place for it...
I have created a very simple batch file (echo hello world) and was trying
to retrieve the standard output but every time I run the code it returns
ExitCode as 1.
The batch file runs just fine from command line.
There is no Win32Exception (no ERROR_FILE_NOT_FOUND and no
ERROR_ACCESS_DENIED)
Also strOutput and strError returns empty.
What ExitCode1 means?
Am I missing on something?
Here is the code:
try
{
System.Diagnostics.Process MFGProc = new System.Diagnostics.Process();
MFGProc.StartInfo.FileName = strMfgWorkDir + strMfgBatFile;
MFGProc.StartInfo.WorkingDirectory = strMfgWorkDir;
MFGProc.StartInfo.UseShellExecute = false;
MFGProc.StartInfo.RedirectStandardError = true;
MFGProc.StartInfo.RedirectStandardOutput = true;
MFGProc.Start();
string strOutput = MFGProc.StandardOutput.ReadToEnd();
string strError = MFGProc.StandardError.ReadToEnd();
MFGProc.WaitForExit();
if (MFGProc.ExitCode == 0)
{
Ok = true;
}
else
{
strErrorMsg = " Running failed. Description: " + strError;
}
}
catch (Win32Exception e)
{
strErrorMsg = "W32 Error:" + e.NativeErrorCode.ToString() + "." +
e.Message ;
}
catch (Exception err)
{
// Process other errors here
strErrorMsg = ("RunMFGCimSession Other error. ErrorMessage: " +
err.Message );
}
Thanks
Nurit