您好我需要将mysqldump的结果写入带有标准Windows命令的文件。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.WorkingDirectory = "sample directory";
proc.StartInfo.FileName = "mysqldump";
proc.StartInfo.Arguments = "-u root -pPassword --all-databases > db.sql";
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
但它不会以这种方式写入文件...... 我不想读取输出然后将其写入文件,因为mysqldump输出可能变得非常大... 任何解决方案?
答案 0 :(得分:5)
尝试执行cmd.exe并输入命令以防止程序吞噬重定向:
proc.StartInfo.FileName = "cmd.exe";
proc.startinfo.Arguments =
"/c \"mysqldump -u root -pPassword --all-databases\" > db.sql"
答案 1 :(得分:1)
如果有很多输出你可以使用proc.OutputDataReceived
事件,在事件处理程序中只需将输出写入你的文件。
答案 2 :(得分:0)
几乎在类似的行上,但用VB.NET编写。转换它,你应该很好...... http://blogs.msdn.com/b/rahulso/archive/2006/04/01/run-a-command-from-the-command-prompt-and-get-its-output-in-a-windows-application.aspx
答案 3 :(得分:0)
对于管道输出,您可能需要ShellExecute为 true 。如果这不起作用,你可能不得不自己管道(即处理数据事件,或者有一个异步读/写循环),但是大小应该无关紧要,因为你应该只在任何时候读取它的小块