首页 > 解决方案 > 使用 IO 流重定向启动进程

问题描述

如何启动进程并运行如下命令:

mysql -u root --password="some-password" < "some-file.sql" 

是否可以使用 process.Start()?

我需要跨平台解决方案(我们不能使用 cmd.exe)。

标签: c#command-line

解决方案


是的,这可以通过System.Diagnostics.Process课堂来实现。需要设置RedirectStandardInputtrue,之后可以写入文件内容重定向进程的标准输入,并将文件内容写入Process.StandardInput(也就是a StreamWriter

这应该让你开始:

var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "mysql.exe", // assumes mysql.exe is in PATH
            Arguments = "-u root --password=\"some-password\"",
            RedirectStandardInput = true,
            UseShellExecute = false
        },
    };

process.Start();

process.StandardInput.Write(File.ReadAllText("some-file.sql"));

更新:[这里]( https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.redirectstandardinput)有很好的记录


推荐阅读