我正在尝试从C#winform应用程序运行控制台命令并读取它们的输出,但是当我输出时包含Windows“copyright”。
我认为我不能在每个\n
字符上拆分输出并摆脱起始行,因为并非所有cmd版本都输出那些垃圾数据,所以有没有办法只获取对命令的“响应”而不是控制台中作为输出的整个文本?
这是我的代码:
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;
这是我的输出(不介意控制台颜色代码):
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>
如何摆脱所有垃圾文本?
答案 0 :(得分:0)
这是因为您正在从Process运行cmd.exe。 只需将其更改为直接调用home-server.exe即可。 这应该有用。