在Windows上的cmd
中创建一个mysqldump非常简单,只需:
打开cmd
并输入类型mysqldump uroot ppassword database> C:/data.sql
这会生成所需数据库的SQL转储文件。
我正在编写一个控制台应用程序,所以我可以运行这个命令:
-uroot -ppass databse > location\data.sql
我尝试了以下代码无济于事:
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd);
如何启动cmd
进程并成功发送命令?
答案 0 :(得分:33)
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
/* execute "dir" */
cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
答案 1 :(得分:6)
你有没有直接调用mysqldump的原因?
ProcessStartInfo procStartInfo =
new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql");
如果是的原因,您的代码应如下所示:
ProcessStartInfo procStartInfo =
new ProcessStartInfo("cmd",
"/c \"mysqldump uroot ppassword databse > c:/data.sql\"");
的变化:
cmd
变量中缺少“mysqldump”的地方。答案 2 :(得分:2)
您是否使用刚刚创建的ProcessStartInfo实例运行Process.Start(psi)?
无论如何,以下应该做的工作:
string commandToExecute = @"c:\windows\system32\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);
答案 3 :(得分:1)