使用命令行程序时,通过c#类方法。
如何确定命令行程序是否已成功执行且其执行的操作是正常还是失败?
另外,如何将屏幕命令行输出到c#类方法?
答案 0 :(得分:3)
您可以使用Process类执行命令行命令。
以下代码将标准输出捕获到output
,并将进程退出代码分配给exitCode
。
using (Process p = new Process())
{
p.StartInfo.FileName = exeName;
p.StartInfo.Arguments = args;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
int exitCode = p.ExitCode;
}
答案 1 :(得分:1)
类似的东西:
Process mycommand = new Process();
mycommand.StartInfo.FileName = "myexe.exe";
mycommand.StartInfo.Arguments = "param1";
mycommand.StartInfo.UseShellExecute = false;
mycommand.StartInfo.RedirectStandardOutput = true;
mycommand.Start();
Console.WriteLine(mycommand.StandardOutput.ReadToEnd());
mycommand.WaitForExit();
你通常确定一个exe的状态,退出代码是否为0,但这可以说是exe的编写者
答案 2 :(得分:0)
我假设您正在使用Process
类来调用命令行应用程序。
您可以使用Process.ExitCode
找到流程的退出代码。您可以在启动之前设置ProcessStartInfo.RedirectStandardOutput
,然后使用Process.StandardOutput
或Process.OutputDataReceived
事件来重定向其标准输出。
答案 3 :(得分:0)
看一下这个问题enter link description here。
您可能需要的其他信息是process.ExitCode
,看看它是否成功。当然,控制台应用程序的Main方法必须在不成功时返回退出代码,许多人不会这样做。
答案 4 :(得分:0)
为此,您使用Process.Start
方法。您可以使用传入的ProcessStartInfo
:
var myProcess = Process.Start(new ProcessStartInfo {
FileName = "process.exe",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
});
if (!myProcess.WaitForExit(5000)) { // give it 5 seconds to exit
myProcess.Kill();
}
if (myProcess.ExitCode != 0) {
// error!
}
var output = myProcess.StandardOutput.ReadToEnd(); // access output