【发布时间】:2013-03-30 00:40:39
【问题描述】:
我想将 cmd.exe 输出重定向到某处,当命令为一行时,下面的代码可以工作:
Process p = new Process()
{
StartInfo = new ProcessStartInfo("cmd")
{
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
CreateNoWindow = true,
Arguments = String.Format("/c \"{0}\"", command),
}
};
p.OutputDataReceived += (s, e) => Messagebox.Show(e.Data);
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
但是像 WriteLine() 这样的一系列命令怎么样:
p.StandardInput.WriteLine("cd...");
p.StandardInput.WriteLine("dir");
在这种情况下如何获得输出?
【问题讨论】:
-
澄清:你想要你的命令的所有输出吗?还是最后一个?连续拨打
RunWithRedirect()已经达到您的目标。 -
同时,我的命令是串联的。像“cd path”然后“做某事”,我想要所有的输出
-
连续拨打
RunWithRedirect()怎么样?在你的情况下听起来没问题。
标签: c# console cmd stdout stdin