从Cmd.exe获取字符串C#

时间:2011-07-12 16:01:29

标签: c#

假设我有一个.bat文件,文本就像 你好 暂停

输出“你好”。 别的什么

如果我从C#启动进程,也许我想在进程上空闲并将其输出的所有内容都放到字符串中? 就像我扫描过程一样。

我有代码,这样做,但是在0秒之后,当进程启动时,它会获取它输出的内容,但只有第一个。 如果我得到一个100行的bat文件,那么它只需要1个。

总而言之,当bat文件输出任何新内容时,我想在我的C#应用​​程序中获取它。

请帮忙

示例代码:

Directory.SetCurrentDirectory(@"C:\Users\WS\Desktop\Modded\"); 
Process p = new Process(); 
p.StartInfo.FileName = @"C:\Users\WS\Desktop\Modded\Launcher.bat"; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.CreateNoWindow = true; 
p.StartInfo.RedirectStandardOutput = true; 
p.Start(); 
txtLog.Text = 
p.StandardOutput.ReadToEnd(); 
p.Close(); 

~~ redpois0n

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题是正确的,它应该返回一个字符串数组,听起来你只是检索/显示数组的第一个元素。如果命令行有许多参数,则需要从0到数组的大小循环遍历数组。

此外,txtLog可能需要更改为:         txtLog.Text + = p.StandardOutput.ReadToEnd(); 如果你要附加到日志中。