从流程的StandardOutput恢复原始颜色

时间:2019-07-17 17:49:17

标签: c# colors console interop ansi-escape

好吧,最近24小时我一直在研究如何从特定流程的StandardOutput中获取颜色:

private static void ProcessOnOutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Console.WriteLine(e.Data);
}

private static void ProcessOnErrorDataReceived(DataReceivedEventArgs e, bool displayRed)
{
    Console.WriteLine(e.Data);
}

private static void CreateProcess(string fileName, string arguments, string workingDir)
{
    CreateProcess(fileName, arguments, workingDir, null);
}

private static void CreateProcess(string fileName, string arguments, string workingDir, DataReceivedEventHandler outputHandler)
{
    CreateProcess(fileName, arguments, workingDir, null, outputHandler);
}

private static void CreateProcess(string fileName, string arguments, string workingDir,
    Func<bool> continueFunc, DataReceivedEventHandler outputHandler)
{
    if (string.IsNullOrEmpty(fileName))
        throw new ArgumentNullException(nameof(fileName));

    if (string.IsNullOrEmpty(arguments))
        throw new ArgumentNullException(nameof(arguments));

    if (string.IsNullOrEmpty(workingDir))
        throw new ArgumentNullException(nameof(workingDir));

    using (var process =
        new Process
        {
            StartInfo =
                new ProcessStartInfo(fileName, arguments)
                {
                    WorkingDirectory = workingDir,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true
                }
        })
    {
        if (continueFunc?.Invoke() == true)
            return;

        GetExecutingString(process.StartInfo);

        process.OutputDataReceived += outputHandler ?? ((sender, e) => ProcessOnErrorDataReceived(e, false));
        process.ErrorDataReceived += (sender, e) => ProcessOnErrorDataReceived(e, outputHandler != null);
        process.Start();

        process.BeginOutputReadLine();
        process.BeginErrorReadLine();

        process.WaitForExit();
    }
}

这就是我所说的:

CreateProcess(gitPath, @"log", workingDir);

  • workingDir是任何存储库文件夹。
  • gitPath例如:

    string gitPath = @“ C:\ Program Files \ Git \ bin \ git.exe”; //字符串gitPath = @“ C:\ Program Files \ Git \ mingw64 \ bin \ git.exe”;

由于这个提示,我测试了两条路径:

  

但是,如果您调用的进程没有转储ANSI序列,(cmd会   不这样做)您将不会收到任何颜色信息。

发件人:https://stackoverflow.com/a/35846927/3286975

但是他们在其StandardOut上返回了相同数量的字节。

我搜索了一些主题:

此外,我尝试转储原始字节以搜索“怪异”控制字符,但没有任何运气。

您可以在这里看到它们:

63 6F 6D 6D 69 74 20 35 66 37 63 34 35 39 65 39 66 64 65 34 31 38 65 33 38 34 63 61 38 35 30 35 39 61 37 33 39 34 34 61 65 31 34 66 35 66 37 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 37 20 30 33 3A 33 30 3A 35 34 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 54 65 73 74 69 6E 67 20 73 75 62 6D 6F 64 75 6C 65 73 3B 20 73 6F 6D 65 20 63 68 61 6E 67 65 64 20 6D 61 64 65 0A 0A 63 6F 6D 6D 69 74 20 37 38 64 64 34 32 31 34 38 63 62 36 37 65 61 31 66 32 37 38 33 63 32 35 36 32 36 66 32 30 66 31 30 32 64 65 31 64 39 31 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 32 3A 33 36 3A 31 34 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 63 6F 6D 70 6F 73 65 72 75 70 64 61 74 65 72 0A 0A 63 6F 6D 6D 69 74 20 38 30 65 34 32 61 63 64 32 34 33 33 64 39 32 31 35 35 32 64 33 31 34 66 32 36 30 32 64 30 37 30 35 31 34 61 66 63 37 33 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 32 3A 30 34 3A 30 35 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 2D 61 64 64 65 64 20 63 75 73 74 6F 6D 5F 70 68 70 2E 69 6E 69 0A 0A 63 6F 6D 6D 69 74 20 32 35 37 66 66 63 32 32 64 64 38 35 62 33 39 37 66 39 65 34 64 33 39 37 30 35 34 30 38 62 38 61 63 65 34 62 34 34 64 62 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 35 36 3A 33 30 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 43 68 61 6E 67 65 64 20 63 75 73 74 6F 6D 5F 70 68 70 2E 69 6E 69 20 2D 2D 3E 20 2E 75 73 65 72 2E 69 6E 69 0A 0A 63 6F 6D 6D 69 74 20 37 63 38 66 30 62 61 32 66 38 31 31 39 37 36 63 34 39 63 61 39 63 38 64 66 35 30 61 32 63 32 61 37 61 35 61 30 38 65 33 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 34 39 3A 31 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 63 6F 6E 66 69 67 20 66 6F 72 20 70 72 6F 64 20 65 6E 76 0A 0A 63 6F 6D 6D 69 74 20 37 31 39 33 39 35 31 31 65 36 61 34 34 64 66 33 37 38 64 35 64 61 39 65 63 61 65 39 64 38 34 34 33 31 34 65 64 65 64 34 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 32 35 3A 33 39 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 63 75 73 74 6F 6D 5F 70 68 70 2E 69 6E 69 20 66 69 6C 65 0A 0A 63 6F 6D 6D 69 74 20 32 35 63 34 62 33 65 31 30 33 38 65 64 65 38 66 62 62 30 61 35 36 30 34 65 34 65 32 61 62 62 63 61 34 34 30 34 62 34 65 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 31 34 3A 34 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 46 69 78 65 64 20 70 72 6F 62 6C 65 6D 0A 0A 63 6F 6D 6D 69 74 20 38 37 64 63 66 62 30 61 30 36 33 34 33 64 66 31 62 62 62 63 66 36 64 39 35 32 32 36 61 39 34 31 62 66 31 61 31 66 61 61 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 30 35 3A 34 34 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 66 6F 6C 64 65 72 0A 0A 63 6F 6D 6D 69 74 20 63 39 63 34 31 66 66 65 30 37 66 37 63 62 36 63 30 65 37 33 36 38 62 64 39 38 34 62 64 34 64 37 39 64 36 34 61 65 62 35 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 31 3A 30 34 3A 34 32 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 65 74 74 69 6E 67 20 65 6E 76 20 76 61 72 0A 0A 63 6F 6D 6D 69 74 20 62 33 30 32 66 35 33 35 37 37 32 66 30 33 61 61 31 62 61 35 62 35 64 64 32 34 35 35 66 66 62 64 62 39 30 37 31 30 65 38 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 32 30 3A 34 38 3A 31 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 73 75 62 6D 6F 64 75 6C 65 0A 0A 63 6F 6D 6D 69 74 20 61 63 62 37 37 61 36 66 39 39 39 65 64 65 32 65 31 62 63 36 36 31 36 65 35 31 62 35 39 31 35 63 63 66 36 32 38 32 32 34 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 38 3A 30 39 3A 32 38 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 55 70 64 61 74 65 64 20 73 75 62 6D 6F 64 75 6C 65 73 20 66 6F 72 20 70 68 70 6D 79 61 64 6D 69 6E 0A 0A 63 6F 6D 6D 69 74 20 63 61 34 34 63 66 35 65 61 32 37 30 37 65 32 63 32 38 39 30 31 37 38 36 36 63 66 61 32 34 39 31 65 65 64 64 32 36 36 62 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 37 3A 35 31 3A 34 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 75 62 6D 6F 64 75 6C 65 20 73 79 6E 63 0A 0A 63 6F 6D 6D 69 74 20 38 33 37 39 62 38 36 39 31 65 66 32 30 35 34 34 35 62 64 61 33 62 38 64 63 37 63 37 39 39 61 30 32 36 35 34 64 38 31 30 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 37 3A 34 37 3A 32 38 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 55 70 64 61 74 65 64 20 63 6F 6D 70 6F 73 65 72 0A 0A 63 6F 6D 6D 69 74 20 38 65 65 30 34 31 37 31 33 30 31 63 62 61 35 32 32 32 64 32 35 37 36 35 38 65 36 39 32 35 66 30 33 35 30 64 64 66 37 62 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 37 3A 34 32 3A 35 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 4D 6F 76 65 64 20 66 69 6C 65 73 20 74 6F 20 27 77 65 62 2F 27 20 66 6F 6C 64 65 72 0A 0A 63 6F 6D 6D 69 74 20 62 38 38 65 37 35 33 36 38 31 66 64 63 63 32 64 64 38 61 39 61 65 39 31 30 64 64 61 62 32 32 33 62 30 66 65 31 31 34 61 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 35 3A 34 37 3A 31 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 74 6F 20 73 75 62 6D 6F 64 75 6C 65 73 0A 0A 63 6F 6D 6D 69 74 20 61 31 37 36 33 30 33 31 37 30 62 37 63 61 61 66 33 37 65 37 39 31 35 36 62 32 34 38 32 35 38 66 63 39 63 35 33 64 39 32 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 35 3A 34 32 3A 32 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 4D 6F 76 65 64 20 66 69 6C 65 73 0A 0A 63 6F 6D 6D 69 74 20 65 63 31 39 64 33 35 38 38 66 37 38 37 36 62 34 65 66 36 61 65 33 65 32 37 64 37 31 64 30 64 63 32 65 31 32 31 39 66 37 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 35 3A 33 34 3A 32 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 70 68 70 6D 79 61 64 6D 69 6E 0A 0A 63 6F 6D 6D 69 74 20 33 36 31 64 35 66 32 35 65 39 31 64 61 66 62 37 35 66 62 35 36 32 34 34 34 31 34 65 65 66 36 66 36 38 33 39 37 32 65 63 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 31 36 20 31 35 3A 32 35 3A 31 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 77 70 2D 63 6F 6E 66 69 67 20 76 61 72 73 0A 0A 63 6F 6D 6D 69 74 20 33 30 32 62 66 63 33 38 61 66 32 65 35 63 31 66 32 62 39 38 30 37 32 32 31 65 63 61 37 35 31 64 63 62 63 30 37 36 64 39 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 4D 6F 6E 20 4A 75 6C 20 31 35 20 31 37 3A 34 31 3A 31 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 67 69 74 6D 6F 64 75 6C 65 73 0A 0A 63 6F 6D 6D 69 74 20 37 36 35 39 30 30 39 33 63 61 38 37 39 38 31 33 62 39 39 39 33 65 61 31 31 36 34 30 39 65 63 32 62 64 37 61 62 66 66 62 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 31 38 3A 32 39 3A 30 33 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 70 72 6F 64 75 63 74 20 63 68 65 63 6B 6F 75 74 20 76 61 6C 69 64 73 74 69 6F 6E 20 28 6D 69 78 2F 6D 61 78 29 0A 0A 63 6F 6D 6D 69 74 20 39 37 61 34 37 33 31 62 34 34 36 33 34 61 61 65 35 37 37 65 32 36 37 65 39 35 64 62 64 30 30 37 62 34 39 37 61 33 64 30 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 31 37 3A 32 31 3A 34 35 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 43 68 61 6E 67 65 64 20 66 6F 72 6D 3B 20 61 64 64 65 64 20 70 6C 75 67 69 6E 20 26 26 20 43 6F 6F 6B 69 65 73 20 70 6C 75 67 69 6E 0A 0A 63 6F 6D 6D 69 74 20 32 30 31 62 36 65 34 34 31 62 35 65 39 66 64 66 30 37 62 33 65 39 33 65 38 63 38 30 34 35 63 63 61 65 66 64 62 32 37 61 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 31 35 3A 32 32 3A 33 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 74 61 72 74 69 6E 67 20 77 69 74 68 20 63 6C 69 65 6E 74 20 64 61 74 61 0A 0A 63 6F 6D 6D 69 74 20 62 63 34 36 33 66 66 37 33 61 65 34 33 36 38 36 36 64 33 31 30 37 61 31 35 38 62 32 39 38 35 64 33 66 64 30 62 38 63 34 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 31 35 3A 31 33 3A 31 33 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 6F 6D 65 20 66 69 78 65 73 0A 0A 63 6F 6D 6D 69 74 20 35 66 30 63 38 62 33 33 36 61 62 34 63 37 62 36 35 31 36 65 33 38 63 39 39 37 33 36 32 63 64 34 38 63 35 30 38 38 65 39 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 30 31 3A 33 33 3A 32 31 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 51 4C 20 62 61 63 6B 75 70 0A 0A 63 6F 6D 6D 69 74 20 30 38 31 34 63 38 62 66 66 35 38 38 64 62 35 37 39 31 33 36 64 61 34 33 64 37 62 63 39 61 30 34 35 35 62 33 61 33 35 63 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 30 31 3A 32 32 3A 33 31 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 43 61 74 63 68 69 6E 67 20 75 72 6C 73 0A 0A 63 6F 6D 6D 69 74 20 61 35 36 34 30 36 35 64 63 62 66 36 37 64 32 30 35 37 34 63 61 66 36 63 65 32 32 65 37 65 31 30 30 34 64 63 64 30 37 30 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 53 61 74 20 4A 75 6C 20 31 33 20 30 30 3A 31 33 3A 33 38 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 43 68 61 6E 67 65 73 0A 0A 63 6F 6D 6D 69 74 20 66 35 30 39 63 62 37 66 61 63 35 34 66 32 35 66 63 39 34 36 36 62 33 63 65 33 66 36 39 38 36 38 31 36 37 39 61 38 31 39 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 46 72 69 20 4A 75 6C 20 31 32 20 32 31 3A 34 30 3A 35 31 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 70 6C 75 67 69 6E 73 3B 20 61 64 64 65 64 20 66 72 6F 6E 74 20 65 6E 64 20 66 6F 72 20 66 6F 72 6D 2C 20 63 68 61 6E 67 65 64 20 73 74 79 6C 65 73 20 66 6F 72 20 70 72 6F 64 75 63 74 73 0A 0A 63 6F 6D 6D 69 74 20 39 34 64 35 32 30 64 34 65 66 30 33 37 32 32 65 64 61 31 39 31 30 61 62 31 35 64 64 65 66 31 31 37 38 65 66 33 64 65 65 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 68 75 20 4A 75 6C 20 31 31 20 30 35 3A 34 31 3A 32 38 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 54 72 79 69 6E 67 20 74 6F 20 73 68 6F 77 20 64 65 73 63 73 0A 0A 63 6F 6D 6D 69 74 20 33 64 62 37 36 62 30 35 33 34 33 65 65 35 35 31 32 34 30 61 38 62 64 65 32 66 38 65 30 34 66 39 39 64 30 32 38 63 64 37 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 68 75 20 4A 75 6C 20 31 31 20 30 31 3A 35 32 3A 31 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 63 6F 64 65 0A 0A 63 6F 6D 6D 69 74 20 31 33 66 33 61 30 31 62 62 63 61 65 34 30 33 39 31 32 63 65 31 38 34 30 61 33 39 63 66 32 64 61 33 64 33 37 34 61 31 32 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 68 75 20 4A 75 6C 20 31 31 20 30 31 3A 35 31 3A 35 30 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 46 69 78 65 64 20 6D 61 73 6F 6E 72 79 0A 0A 63 6F 6D 6D 69 74 20 63 30 38 34 35 36 31 39 66 63 63 31 38 37 32 66 35 36 31 32 64 63 34 65 66 65 65 36 63 39 61 65 32 31 38 35 61 62 36 38 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 30 20 32 32 3A 35 36 3A 31 30 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 6D 61 6E 73 6F 72 79 3B 20 61 64 64 65 64 20 69 6D 61 67 65 20 64 72 61 77 65 72 3B 20 61 64 64 65 64 20 74 65 73 74 73 0A 0A 63 6F 6D 6D 69 74 20 34 61 64 37 64 30 63 66 65 39 61 35 39 33 65 32 33 61 66 33 39 62 64 64 65 62 63 39 39 66 36 63 36 36 38 37 38 33 31 32 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 30 20 32 30 3A 33 32 3A 31 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 6F 6D 65 20 66 69 78 65 73 3B 20 66 6F 6F 74 65 72 3B 20 65 6D 61 69 6C 0A 0A 63 6F 6D 6D 69 74 20 63 33 38 39 62 62 31 62 31 66 39 66 65 65 62 35 66 66 38 64 32 62 66 66 32 34 66 35 30 34 37 61 36 66 66 38 36 64 38 38 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 30 20 31 39 3A 30 34 3A 35 37 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 63 6F 64 65 0A 0A 63 6F 6D 6D 69 74 20 31 62 34 65 62 37 35 31 65 39 63 35 36 31 36 31 39 64 62 35 32 65 35 64 33 61 35 34 36 39 35 63 37 32 62 30 31 36 39 32 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 30 20 31 39 3A 30 34 3A 32 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 67 6F 6F 67 6C 65 20 61 70 69 3B 20 61 64 64 65 64 20 73 6C 69 64 65 72 0A 0A 63 6F 6D 6D 69 74 20 65 65 39 38 34 34 63 36 30 66 64 39 63 34 36 37 32 36 36 38 39 62 31 39 39 61 64 39 64 61 63 63 34 65 37 30 38 65 30 31 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 57 65 64 20 4A 75 6C 20 31 30 20 30 33 3A 30 38 3A 31 31 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 6D 6F 72 65 20 63 6F 6E 74 65 6E 74 20 74 6F 20 69 6E 64 65 78 0A 0A 63 6F 6D 6D 69 74 20 64 61 35 35 34 65 65 63 39 30 64 61 38 65 39 31 36 38 63 32 36 38 61 38 37 30 34 37 35 64 62 61 34 30 31 62 61 31 34 63 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 32 33 3A 31 31 3A 33 33 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 6C 69 76 69 6E 67 20 76 69 64 65 6F 73 0A 0A 63 6F 6D 6D 69 74 20 64 37 63 61 64 66 66 30 36 30 39 64 64 35 38 37 37 32 38 39 62 35 34 33 62 34 35 36 65 37 64 61 65 39 65 30 62 39 32 36 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 32 32 3A 32 36 3A 31 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 66 69 6C 65 73 0A 0A 63 6F 6D 6D 69 74 20 34 34 63 37 64 33 65 33 32 65 61 38 33 64 33 30 31 33 37 34 31 32 61 61 38 64 61 36 66 36 30 34 38 66 39 38 30 63 35 38 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 32 32 3A 32 35 3A 32 39 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 53 6F 6D 65 20 63 68 61 6E 67 65 73 0A 0A 63 6F 6D 6D 69 74 20 34 61 34 64 38 33 35 30 36 62 64 65 38 66 39 63 66 62 36 32 61 65 36 66 66 65 37 33 38 33 36 65 62 63 37 30 31 64 35 39 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 32 32 3A 31 38 3A 33 36 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 67 72 61 70 68 20 73 64 6B 20 26 26 20 6C 69 76 65 20 76 69 64 65 6F 73 20 66 72 6F 6D 20 72 65 70 6F 0A 0A 63 6F 6D 6D 69 74 20 63 65 33 64 63 35 65 37 63 35 36 39 35 37 32 38 35 62 33 61 32 31 37 61 38 34 32 62 37 38 31 65 37 62 38 38 34 37 64 37 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 32 31 3A 33 36 3A 35 35 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 69 6E 67 20 6C 69 76 65 20 76 69 64 65 6F 73 0A 0A 63 6F 6D 6D 69 74 20 33 33 31 61 39 64 34 63 33 66 31 66 32 61 62 36 33 31 33 30 62 30 61 36 33 36 31 30 65 62 65 33 32 38 66 32 32 63 38 35 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 54 75 65 20 4A 75 6C 20 39 20 30 35 3A 30 33 3A 30 31 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 41 64 64 65 64 20 74 68 65 6D 69 66 79 0A 0A 63 6F 6D 6D 69 74 20 30 39 34 36 39 66 36 31 37 39 66 38 66 33 61 62 63 64 61 39 37 34 64 36 35 63 61 35 34 63 36 33 33 36 66 30 30 35 32 66 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 4D 6F 6E 20 4A 75 6C 20 38 20 32 30 3A 35 37 3A 31 35 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 52 65 6D 6F 76 65 64 20 74 68 65 6D 65 73 20 26 26 20 70 6C 75 67 69 6E 73 0A 0A 63 6F 6D 6D 69 74 20 30 32 34 32 66 35 35 39 37 61 30 36 32 33 65 63 64 31 37 66 39 33 39 34 39 66 64 30 66 31 36 30 32 62 30 64 38 34 63 31 0A 41 75 74 68 6F 72 3A 20 7A 33 6E 74 68 31 30 6E 20 3C 7A 33 6E 74 68 31 30 6E 40 67 6D 61 69 6C 2E 63 6F 6D 3E 0A 44 61 74 65 3A 20 20 20 4D 6F 6E 20 4A 75 6C 20 38 20 32 30 3A 32 36 3A 31 33 20 32 30 31 39 20 2B 30 32 30 30 0A 0A 20 20 20 20 49 6E 69 74 69 61 6C 20 63 6F 6D 6D 69 74 0A 

获得者:

// Inside method
var bytesOut = ReadFully(process.StandardOutput.BaseStream);
var bytesError = ReadFully(process.StandardError.BaseStream);

string hexString = ToHex(bytesOut);
// End method

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

public static string ToHex(byte[] ba)
{
    StringBuilder hex = new StringBuilder(ba.Length * 2);

    foreach (byte b in ba)
    {
        hex.AppendFormat("{0:x2}", b);
        hex.Append(" ");
    }

    return hex.ToString().ToUpperInvariant();
}
  • bytesOut输出6625个字节。
  • bytesErr输出0个字节。

hexString是从上方粘贴的代码中看到的内容。

借助此答案,现在我知道Git使用MinTTY来使颜色在Windows控制台上工作:https://stackoverflow.com/a/38617204/3286975

但是我没有找到任何方法可以从该工具中获取颜色。

我一直在研究更多的技术来获得原始的颜色代码,而我所缺少的是什么?

任何帮助将不胜感激。

0 个答案:

没有答案