c#:运行带有选项的终端命令?



在。net核心下运行命令,但运气不好。

我有一个基本的命令,我想执行如下:

mysqldump -h ... -u ... -p... -P 3306 name > backup_020423_153050.sql

我已经写了一个c#类来为我做这件事:

public static void RunShellCommand(string command, string arguments)
{
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = command,
Arguments = arguments,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
},
};

process.Start();
process.WaitForExit();
var output = process.StandardOutput.ReadToEnd();
var error = process.StandardError.ReadToEnd();
if (!string.IsNullOrEmpty(output))
{
Console.WriteLine(output);
}
if (!string.IsNullOrEmpty(error))
{
Console.WriteLine(error);
}
}

这样称呼:

TerminalUtilities.RunShellCommand(command, $"-h {host} -u {username} -p{password} -P {port} {databaseName} > {fileName}");

虽然我得到

mysqldump: could 't find table: ">">

这是怎么回事?我猜c#对输入做了一些奇怪的事情。

您传递了一个> {fileName}部件作为参数,因此mysqldump尝试解析这些参数,并威胁>符号作为表名。

我假设您想将mysqldump输出重定向到文件中。在这种情况下,您不应该将> {fileName}作为参数传递,而应该配置标准输出重定向。您可以使用Process.RedirectStandardOutput。重定向进程输出c#或重定向输出到文本文件c#(请注意,答案使用cmd及其执行重定向的功能)。不求最好,只求兴趣。

相关内容

  • 没有找到相关文章

最新更新