假设我有一个.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
答案 0 :(得分:0)
如果我理解你的问题是正确的,它应该返回一个字符串数组,听起来你只是检索/显示数组的第一个元素。如果命令行有许多参数,则需要从0到数组的大小循环遍历数组。
此外,txtLog可能需要更改为: txtLog.Text + = p.StandardOutput.ReadToEnd(); 如果你要附加到日志中。