我有一个调用命令提示符的Visual Studio 2015程序。如何在命令提示符下写入2行?这是我目前的代码:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy " + calibrT1 + "_CDF.hex\"" + calibrT1 + "_ECC_CDF.hex\"";
process.StartInfo = startInfo;
process.Start();
startInfo.Arguments = "/C c:\\ti\\hercules\\nowECC\\2.21.00\\nowECC -f035 -r4 -i "+ calibrT1 + "_ECC_CDF.hex\" -a ";
//MessageBox.Show("Tester");
process.StartInfo = startInfo;
process.Start();
作为一个有趣的说明。此当前代码不起作用。但是,如果没有注释掉MessageBox.Show(“Tester”),它确实有效。因此,我可以确定我的代码行是否正确并按照我的意愿工作,但是如果没有MessageBox,则不能按顺序工作。我无法理解为什么因为我看不出消息框应该影响我的命令提示符的逻辑原因。
感谢您的帮助。
答案 0 :(得分:1)
您需要在开始新的之前等待。所以需要先放置WaitForExit(这可以完成MessageBox正在做的工作)。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy " + calibrT1 + "_CDF.hex\"" + calibrT1 + "_ECC_CDF.hex\"";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit(); // Wait First
startInfo.Arguments = "/C c:\\ti\\hercules\\nowECC\\2.21.00\\nowECC -f035 -r4 -i "+ calibrT1 + "_ECC_CDF.hex\" -a ";
process.StartInfo = startInfo;
process.Start();