c# - 使用 IO 流重定向启动进程
问题描述
如何启动进程并运行如下命令:
mysql -u root --password="some-password" < "some-file.sql"
是否可以使用 process.Start()?
我需要跨平台解决方案(我们不能使用 cmd.exe)。
解决方案
是的,这可以通过System.Diagnostics.Process
课堂来实现。需要设置RedirectStandardInput
为true
,之后可以写入文件内容重定向进程的标准输入,并将文件内容写入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)有很好的记录
推荐阅读
- amazon-web-services - 跟踪 AWS 对象/服务
- vba - VBA:如何以不同方式格式化文本框文本的不同部分?
- c# - 无法停止异步 TCP 服务器 Windows 服务
- javascript - 我可以只更新 Bootstrap JS 文件吗?
- c# - FlowDocument占用一半空间?
- android - LIBgdx,通过在渲染方法中使用 rectangle.overlaps(rectangle) 方法检测之间的碰撞会给出 StackOverFlow 错误
- python-3.x - 在 Python 3 中制作简单的异步套接字聊天服务器的明显方法是什么?
- sql-server - SQL Server:计算
- javascript - 我想用 javascript 分割窗口 url
- c++ - 如果按回车键,如何退出 C++ 中的循环?