首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中逐行读取命令输出结果

如何在C#中逐行读取命令输出结果
EN

Stack Overflow用户
提问于 2021-05-19 15:12:02
回答 1查看 63关注 0票数 0

我想打开.bat文件,为此我使用了cmd和,并给出了参数输入,最后我收到了完整的输出结果,但我想得到最后一个命令的输出结果,所以如果有人有任何解决方案,请指导我。

代码语言:javascript
运行
复制
using System;
using System.Diagnostics;
using System.Text;

namespace ConsoleApp
{
    class Program
    {
        private static StringBuilder output = new StringBuilder();
        private static System.Diagnostics.Process standalone = new System.Diagnostics.Process();

        static void Main()
        {
            StartStandalone();
            StartProcess();
        }

        private static void StartProcess()
        {
            try
            {
                Process process = new Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.CreateNoWindow = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.UseShellExecute = false;
                process.Start();

                process.StandardInput.WriteLine("C:\\Users\\aali\\EAP-7.2.0\\bin\\Jboss-cli.bat");
                process.StandardInput.WriteLine("connect");
                process.StandardInput.WriteLine("deployment-info");
                process.StandardInput.Flush();
                process.StandardInput.Close();

                String output = "";
                while (!process.StandardOutput.EndOfStream)
                {
                    string line = process.StandardOutput.ReadLine();
                    if (line.Contains("RUNTIME-NAME"))
                    {
                        output += line + "\r\n" + process.StandardOutput.ReadLine() + "\r\n";
                    }

                }

                Console.WriteLine(output);
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
                Console.ReadLine();
            }
        }

        private static void StartStandalone()
        {
            standalone.StartInfo.FileName = "C:\\Users\\aali\\EAP-7.2.0\\bin\\standalone.bat";
            standalone.Start();
        }
    }
}

我用来完成这项任务的代码附在上面

EN

Stack Overflow用户

发布于 2021-05-19 22:58:36

您已经在读取循环中的每一行,因此一个简单的解决方案是将每一行分配给一个名为lastLine的变量,并且在循环完成之前不对该变量执行任何操作。

当然,这并不是非常有效,但只需要对代码进行最小程度的更改。

代码语言:javascript
运行
复制
string lastLine = "";

while (!process.StandardOutput.EndOfStream) 
{
    lastLine = process.StandardOutput.ReadLine();
}

//lastLine will now contain the value of the last line of the output
Console.WriteLine($"Last Line = {lastLine}");
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67598502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档