C# 控制台 : how can i read piped input from the command line

标签 c# windows

我有点困惑。我一直在查看之前对上述问题的回答,但没有一个对我有用,所以我不确定我做错了什么。

我有一个简单的 C# 控制台应用程序:(outputsomething.exe)

static void Main(string[] args) {
    Console.Out.Write("This is a test");
}

还有一个从上面的代码中获取一些参数和管道输入,如下所示: dostuffwithinput.exe 一些参数 |outputsomething.exe

第一个问题是我不知道如何“读取”管道输入,正如我在上面所说的那样,现有的答案都不适合我,从 stdin (Console.In) 读取只是无法捕获任何内容。

其次,在通过管道输入内容后,我无法再将任何内容写入标准输出 (Console.Out)。

我的代码非常简单,它只是将 args 连同一些控制台属性写入一个文件,并尝试从 Console.In 中读取 - 它确实如此,但它只读取我输入的输入。

但是对于管道输入,它永远无法捕获管道输入的内容,最后的输出也永远不会发送到控制台。

    static void Main(string[] args) {
        bool ior = Console.IsInputRedirected;
        bool keyavail = Console.KeyAvailable;

        char[] chrs = new char[4];
        int chr = Console.In.ReadBlock(chrs, 0, 4);

        using (StreamWriter stream = new StreamWriter("fred.txt")) {
            foreach (var arg in args) {
                stream.WriteLine(arg);
                Console.WriteLine(arg);
            }
            stream.WriteLine("input = " + new string(chrs));
            stream.WriteLine("io redirectirected = " + ior);
            stream.WriteLine("is key available = " + keyavail);
        }
        Console.WriteLine("fin");
        Console.Out.Flush();
    }

(我也遇到了这个一堆垃圾编辑器的严重问题,它不断显示关于缩进的红色警告显示我必须删除很多示例才能以可发送的形式获得它!)

我做错了什么? (这是在 windows 10/9879 上)

TIA

最佳答案

对下面的示例代码进行了相同的尝试。它对我有用。

写文本

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test Line1");
            Console.WriteLine("test Line2");
        }
    }

处理输入

class Program
    {
        static void Main(string[] args)
        {
            string s=Console.In.ReadToEnd();

            Console.WriteLine("Redirected Text: " + s);

        }
    }

我使用 WriteText.exe 调用了应用 |进程输入程序 它显示了 WriteText.exe 准确传递的输出字符串

如果这有帮助,请告诉我。

关于C# 控制台 : how can i read piped input from the command line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27565058/

相关文章:

windows - 使用 Node.js Windows 连接到 Oracle 数据库

c++ - Windows 不在 OpenGL 窗口上方绘制

css - @at-root a#{&} 导致错误

c# - 我如何在 C# 中通过 newton 解析非常嵌套的 json?

c# - asyncawait的实际例子不符合预期

c# - 如何防止重复的数据值出现在 MySQL 数据库中

windows - 如何确定进程是否处于死锁状态或正在等待 I/O

c# - 什么时候使用 "this"关键字?

c# - 英孚模型。导航属性只能参与单个关系

c++ - 如何检查 _bstr_t 是否包含(类似于 str.find)字符串