我正在尝试使用 Process 类在 C# 中运行一个进程。
Process p1 = new process();
p1.startinfo.filename = "xyz.exe";
p1.startinfo.arguments = //i am building it based on user's input.
p1.start();
因此,基于用户输入,我正在构建参数值。现在我有一个案例,我必须将 p1 的输出通过管道传递给另一个进程,比如 grep。所以我基本上试过了
p1.startinfo.arguments = "-info |grep 1234";
我想要的是 xyz.exe -info|grep 1234 之类的东西
但这在 .net 中似乎不起作用。我实际上可以创建另一个进程变量并将“grep”作为一个单独的进程运行。但我想知道是否有任何方法可以像我在上面尝试的那样..
最佳答案
更简单的方法是只使用 cmd 作为您的进程。
Process test = new Process();
test.StartInfo.FileName = "cmd";
test.StartInfo.Arguments = @"/C ""echo testing | grep test""";
test.Start();
然后您可以像任何正常过程一样捕获输出或您想要的任何其他内容。这只是我构建的一个快速测试,但它可以将测试输出到控制台,因此我希望这适用于您计划使用管道进行的任何其他操作。如果您希望命令保持打开状态,请使用/K 而不是/C,并且该过程完成后窗口将不会关闭。
关于c#重定向(管道)进程输出到另一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1290747/