首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#读取控制台StandardOutput

C#读取控制台StandardOutput
EN

Stack Overflow用户
提问于 2018-03-26 21:30:29
回答 1查看 406关注 0票数 0

我试图从C# winform应用程序中运行控制台命令并读取它们的输出,但是当我这样做时,输出包含Windows“版权”。

我认为我不能仅仅拆分每个\n字符上的输出并去掉起始行,因为并非所有cmd版本似乎都输出垃圾数据,那么是否有一种方法只获得对命令的“响应”,而不是将控制台中的整个文本作为输出?

这是我的密码:

代码语言:javascript
复制
    Process cmd = new Process();
    cmd.StartInfo.FileName = "cmd.exe";
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.UseShellExecute = false;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.Start();

    cmd.StandardInput.WriteLine("home-server scan");
    cmd.StandardInput.Flush();
    cmd.StandardInput.Close();
    cmd.WaitForExit();
    String output = cmd.StandardOutput.ReadToEnd();
    String[] devices = output.Split('\n');
    textBox1.Text = output;

下面是我的输出(不要介意控制台的颜色代码):

代码语言:javascript
复制
Microsoft Windows [Version 10.0.16299.309]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\users\corrado\Documents\Programming\Projects\home-server-gui\home-server-gui\home-server-gui\bin\Debug>home-server scan
[32mFound following devices:[39m
[32mvodafone.station[39m: http://192.168.1.1:8080

C:\users\corrado\Documents\Programming\Projects\home-server-gui\home-server-gui\home-server-gui\bin\Debug>

我该怎么处理那些垃圾短信呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-26 22:19:05

之所以发生这种情况,是因为您正在从进程中运行cmd.exe。只需将其改为直接调用您的home-server.exe即可。这应该能行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49500946

复制
相关文章

相似问题

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