可能重复:
命令提示符输出被读取为空字符串
我有一个命令行程序,它必须至少执行一次,然后我的代码才能做到这一点。所以我用Process
它来运行它。这似乎有效。
我的问题在于我希望能够看到程序在完成时所说的内容。在某些情况下,它可能会返回错误,这需要用户干预才能继续。在纸面上,这似乎微不足道。可悲的是,我的代码(如下)似乎不起作用:
Process p = new Process();
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = String.Format("/C adb forward tcp:{0} tcp:5574",port.ToString());
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
p.StartInfo = startInfo;
p.Start();
string adbResponse = p.StandardOutput.ReadToEnd();
p.WaitForExit();
if (adbResponse.Contains("error"))
{
// Device not connected - complain loudly
}
当我尝试在自己创建的 CMD 窗口上执行此操作时,我能够可靠地诱导包含单词错误的响应。(特别是通过拔掉某些东西。)然而,在相同的条件下,adbResponse
字符串仍然是空的。我错过了什么?