如何在命令行中将输出重定向为输入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在命令行中将输出重定向为输入?相关的知识,希望对你有一定的参考价值。

我想编写一个控制台应用程序,它可以在命令行中处理输入,如下所示:

type file1.csv file2.csv | TestPipe.exe input1

或者((type file1.csv file2.csv | TestPipe +) & (type file3.csv file4.csv | TestPipe +)) | TestPipe +

在我的TestPipe代码中,我只接收input1作为print input1,如下所示:

static void Main(string[] args)
    {
        Console.WriteLine(string.Format("Your input is {0}", args[0]));
    }

现在我想在另一个Console Application.exe中运行Test Pipe,其代码如下:

        Process Test = new Process();
        Test.StartInfo.FileName = @"C:UsersAdministratorDownloadsTestPipeTestPipeinDebugTestPipe.exe";
        Test.StartInfo.UseShellExecute = false;
        Test.StartInfo.RedirectStandardInput = true;
        Test.Start();
        StreamWriter myStreamWriter = Test.StandardInput;
        string inputTxt;
        do
        {
            inputTxt = Console.ReadLine();
        } while (inputTxt.Length != 0);

        myStreamWriter.Close();
        Test.WaitForExit();
        Test.Close();

但是,我在} while (inputTxt.Length != 0);得到了未处理的例外

题:

1)如何更改代码,以便我可以在命令行中运行type file1.csv file2.csv | TestPipe.exe input1

2)如何在TestPipe中获取file1.csv,file2.csv字符串值?

3)我想运行嵌套的重定向输入,如下所示:((type file1.csv file2.csv | TestPipe +) & (type file3.csv file4.csv | TestPipe +)) | TestPipe +

答案

使用以下命令启动应用程序

var proc = System.Diagnostics.Process.Start("D://TestPipe.exe", "type file1.csv file2.csv | TestPipe.exe input1");

并且您可以使用Main中的args []访问TestPipe.exe中的这些值

    static void Main(string[] args)
    {
       //args[0] == type 
       //args[1] == file1.csv
       //args[1] == file2.csv
    }

以上是关于如何在命令行中将输出重定向为输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个可执行文件中将数据重定向到标准输入?

重定向输入输出的代码块

如何将标准输入重定向到 Windows 命令行中的文件?

如何在 cmd.exe 中将 stderr 重定向到 null

数据流重定向

如何使用 c# 将命令行输出重定向到 ASPX 页面? [复制]