控制台应用串行执行

本文关键字:执行 应用 控制台 | 更新日期: 2023-09-27 18:34:20

我想链接"n"个可执行文件,其中"n-1"个exe的输出作为"n"个exe的输入传递。我计划使用XML文件来配置可执行文件的位置,路径,I/p,o/p等。

我的问题是当有多个输出和多个输入(命令行参数)时,如何将"n-1"链接到"n"。我对此有一些想法,但想看看其他人的想法,也许我会了解一种有效/快速的方法。灵活的 xml 配置的设计模式会有所帮助。

我将使用的伪 XML 结构

<executables>
  <entity position="1" exePath="c:'something1.exe">
     <op><name="a" value=""></op>
  </entity>
  <entity position="2" exePath="c:'something2.exe">
   <ip><name="a"></ip>
   <op><name="b"  value=""></op>
  </entity>
  <entity position="3" exePath="c:'something3.exe">
   <ip><name="b"</ip>
  </entity>
</executables>

在配置这些之前,我会了解 i/p 和 o/p。上下文是,我可能会也可能不会在我将使用的某些链接类型中包含某些节点,从而有效地创建灵活的串行 exe 执行路径。

控制台应用串行执行

您可以使用 System.Diagnostics.Process 类来实现这一点。以下代码应该可以解决两个可执行文件的问题:

using (Process outerProc = new Process())
{
    outerProc.StartInfo.FileName = "something1.exe";
    outerProc.StartInfo.UseShellExecute = false;
    outerProc.StartInfo.RedirectStandardOutput = true;
    outerProc.Start();
    string str = outerProc.StandardOutput.ReadToEnd();
    using(Process innerProc = new Process())
    {
        innerProc.StartInfo.FileName = "something2.exe";
        innerProc.StartInfo.UseShellExecute = false;
        innerProc.StartInfo.RedirectStandardInput = true;
        innerProc.Start();
        innerProc.StandardInput.Write(str);
        innerProc.WaitForExit();
    }
    outerProc.WaitForExit();
}

您可以轻松修改它以适合您的"n-1"到"n"大小写。