开发者

How to make sure a batch file is executed properly through a CMD from a c# applicaiton?

开发者 https://www.devze.com 2023-01-11 22:40 出处:网络
I have a c# applications which writes to a batch file and executes it. The application to be started and the path of application will be written in batch file and executed. which is working fine.

I have a c# applications which writes to a batch file and executes it. The application to be started and the path of application will be written in batch file and executed. which is working fine.

How can i make sure that the application launched successfully via my batch file run in command prompt ?

Is t开发者_JAVA百科here any value that cmd returns after executing a batch file ? or any other ideas please...

Code i am using now :

        public void Execute()
    { 
            string LatestFileName = GetLastWrittenBatchFile();
            if (System.IO.File.Exists(BatchPath + LatestFileName))
            {
                System.Diagnostics.ProcessStartInfo procinfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
                procinfo.UseShellExecute = false;
                procinfo.RedirectStandardError = true;
                procinfo.RedirectStandardInput = true;
                procinfo.RedirectStandardOutput = true;

                System.Diagnostics.Process process = System.Diagnostics.Process.Start(procinfo);

                System.IO.StreamReader stream = System.IO.File.OpenText(BatchPath + LatestFileName);
                System.IO.StreamReader sroutput = process.StandardOutput;
                System.IO.StreamWriter srinput = process.StandardInput;

                while (stream.Peek() != -1)
                {
                    srinput.WriteLine(stream.ReadLine());
                }

                stream.Close();
                process.Close();
                srinput.Close();
                sroutput.Close();
            }
            else
            {
                ExceptionHandler.writeToLogFile("File not found");
            } 
    }


I'm not familiar with batch files, but if there is possibility to return exit code from it, you can check it with System.Diagnostics.Process.ExitCode


Process process = Process.Start(new ProcessStartInfo{
    FileName = "cmd.exe",
    Arguments = "/C myfile.bat",
    UseShellExecute = false,
});
process.WaitForExit();
Console.WriteLine("returned {0}", process.ExitCode);


System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(filename);
                    psi.RedirectStandardOutput = true;
                    psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    psi.UseShellExecute = false;
                    System.Diagnostics.Process listFiles;
                    listFiles = System.Diagnostics.Process.Start(psi);
                    System.IO.StreamReader myOutput = listFiles.StandardOutput;
                    listFiles.WaitForExit(2000);
                    if (listFiles.HasExited)
                    {
                        string output = myOutput.ReadToEnd();
                        MessageBox.Show(output);
                    }
0

精彩评论

暂无评论...
验证码 换一张
取 消