[英]How to get command prompt output
我正在编写 ac# 应用程序来验证有关 SVN 提交中行数更改的详细信息。 在命令提示符中提供以下参数后,它会显示修订号、作者姓名和上次更改日期等...
参数: svn info -r {revision no} {Source path}
例如 - svn info -r 113653 "F:\\SVN"
我也必须在 C# 中实现相同的目标。 在 C# 中给出上述参数时,它应该从命令提示符读取输出(修订号、作者姓名和上次更改日期)并将其存储在一个字符串中。 我尝试过StandardOutput.ReadToEnd()但无法满足我的要求。 任何详细的解释都会有所帮助。
您是否尝试过使用 C# 从命令提示符运行命令,如本问题中所述?
string strCmdText = @"/C svn info -r 113653 ""F:\SVN""";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);
您可以使用以下方法运行命令并从控制台检索标准输出:
public static string StdOut(string args)
{
string cmdOut = "";
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/C " + args)
{
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
};
cmdOut = ExecuteCommand(cmdOut, startInfo);
return cmdOut;
}
它将以字符串形式返回输出。 您还将需要此方法(因为它在上面使用过):
private static string ExecuteCommand(string cmdOut, ProcessStartInfo startInfo)
{
Process p = Process.Start(startInfo);
p.OutputDataReceived += (x, y) => cmdOut += y.Data;
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
return cmdOut;
}
p.OutputdataReceived 是一个DataReceivedEventHandler ,它将把接收到的任何 std 输出连接到 cmdOut 变量上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.