繁体   English   中英

如何获取命令提示符输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM