Diagnostics.Process - 转储输出到文件

时间:2010-11-09 17:26:26

标签: c#

您好我需要将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输出可能变得非常大... 任何解决方案?

4 个答案:

答案 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事件,在事件处理程序中只需将输出写入你的文件。

Read the MSDN article here

答案 2 :(得分:0)

答案 3 :(得分:0)

对于管道输出,您可能需要ShellExecute为 true 。如果这不起作用,你可能不得不自己管道(即处理数据事件,或者有一个异步读/写循环),但是大小应该无关紧要,因为你应该只在任何时候读取它的小块