Начать процесс с перенаправления потока ввода-вывода - PullRequest
0 голосов
/ 02 сентября 2018

Как запустить процесс и выполнить команду следующим образом:

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

Возможно ли это сделать с process.Start ()?

Мне нужно кроссплатформенное решение (мы не можем использовать cmd.exe).

1 Ответ

0 голосов
/ 02 сентября 2018

Да, это возможно через класс System.Diagnostics.Process. Вам необходимо установить RedirectStandardInput на true, после чего вы можете записать содержимое файла, перенаправить стандартный ввод процесса и записать содержимое файла в Process.StandardInput (что является 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...