我正在编写一个c#应用程序,用于验证有关SVN提交中行号更改的详细信息。在命令提示符下提供以下参数后,它会显示修订号,作者姓名和上次更改日期等...
参数: svn info -r {revision no} {Source path}
例如 - svn info -r 113653“F:\ SVN”
我也必须在C#中实现相同的目标。在C#中给出上述参数时,它应该从命令提示符读取输出(修订号,作者姓名和上次更改日期)并将其存储在字符串中。我尝试过 StandardOutput.ReadToEnd(),但无法满足我的要求。任何详细的解释都会有所帮助。
答案 0 :(得分:1)
您是否尝试过使用C#从命令提示符运行命令,如this question中所述?
string strCmdText = @"/C svn info -r 113653 ""F:\SVN""";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);
答案 1 :(得分:0)
您可以使用以下方法运行命令并从控制台检索标准输出:
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,它将连接到cmdOut变量上的任何std输出。