使用c#运行shell命令并将信息转换为字符串

时间:2013-03-05 21:26:40

标签: c# .net shell

我想从c#运行shell命令并使用程序中的返回信息。 所以我已经知道要从终端运行一些东西我需要做那样的事情

string strCmdText;
strCmdText= "p4.exe jobs -e";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);

所以现在执行命令,并从此命令返回一些信息... 我的问题是如何在我的程序中使用这些信息,可能与命令行参数有关,但不确定......

我知道使用python等脚本语言更容易,但确实需要使用c#

1 个答案:

答案 0 :(得分:36)

您可以使用ProcessStartInfo重定向输出。有MSDNSO的例子。

E.G。

Process proc = new Process {
    StartInfo = new ProcessStartInfo {
        FileName = "program.exe",
        Arguments = "command line arguments to your executable",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};

然后开始这个过程并从中读取:

proc.Start();
while (!proc.StandardOutput.EndOfStream) {
    string line = proc.StandardOutput.ReadLine();
    // do something with line
}

根据您要完成的任务,您可以实现更多目标。我编写的应用程序异步地将数据传递到命令行并从中读取数据。这样的例子不容易在论坛上发布。