c#进程/cmd输出解析变量
我正在制作gui到rtmp插件,这是命令行程序。我需要一种方法来读取cmd程序输出数据的三个变量:下载,时间和完成。 在cmd中,输出为exsample“3000kb/12秒(12%)”,不带“”。如何在没有kb的情况下下载3000个变量,在没有秒的情况下下载12个时间,在没有()和%的情况下下载12个完成。下面是我运行cmd进程的代码c#进程/cmd输出解析变量,c#,process,cmd,progress-bar,C#,Process,Cmd,Progress Bar,我正在制作gui到rtmp插件,这是命令行程序。我需要一种方法来读取cmd程序输出数据的三个变量:下载,时间和完成。 在cmd中,输出为exsample“3000kb/12秒(12%)”,不带“”。如何在没有kb的情况下下载3000个变量,在没有秒的情况下下载12个时间,在没有()和%的情况下下载12个完成。下面是我运行cmd进程的代码 int downloaded, time, done; var proc = new Process {
int downloaded, time, done;
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "Data/yle-dl/yle-dl.exe",
Arguments = "-o pasila.flv http://areena.yle.fi/tv/1755554 --rtmpdump rtmpdump.exe ",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = false
}
};
proc.Start();
如果命令行已经有了某种输出,您可以使用
否则,您可以将程序集添加到程序引用中,并访问程序用来指示您的状态的变量(如果存在)。您可以使用正则表达式捕获程序输出并解析值。注意,您还应该捕获经常发生的错误输出,正常输出作为错误处理
Process process = new Process();
process.StartInfo.FileName = "Data/yle-dl/yle-dl.exe";
process.StartInfo.Arguments = "-o pasila.flv http://areena.yle.fi/tv/1755554 --rtmpdump rtmpdump.exe ";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.OutputDataReceived += new DataReceivedEventHandler(ReadOutput);
process.ErrorDataReceived += new DataReceivedEventHandler(ReadOutput);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
private static void ReadOutput(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
Match m = Regex.Match(e.Data, "(\\d+)[^0-9]*(\\d+)[^0-9]*(\\d+)[^0-9]");
if (m.Success)
{
textBox1.Text = m.Result("$1");
string time = m.Result("$2");
string percent = m.Result("$3");
}
}
}
@user1992794正确,
textBox1.Text=m.Result($1”)代码>I get error“名称'm'在当前上下文中不存在”@user1992794请查看我的编辑并阅读有关作用域的内容now I get error“非静态字段、方法或属性需要对象引用”@user1992794 mate,您将获得所有可能的错误,直到您理解所做的操作。我的代码正在运行,我不知道您是如何使用或更改它的。