将参数传递给C#中的运行进程

时间:2011-07-19 20:51:35

标签: c# process cmd

我遇到了运行进程并将args传递给它们的麻烦。 我知道如何使用一些args运行进程

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c something");  
Process p = Process.Start(psi)

问题是脚本执行后进程终止。这就是为什么有“/ c”

但我正在运行多个脚本,我想在一个进程(“cmd.exe”)中运行它们,而不是每次都启动新进程。

是否有一些解决方案?

我希望有人理解我在说什么;)

2 个答案:

答案 0 :(得分:10)

我建议您使用批处理文件来编写可执行文件的执行脚本,然后调用批处理文件。或者,you can do this -

    Process p = new Process();
    ProcessStartInfo info = new ProcessStartInfo();
    info.FileName = "cmd.exe";
    info.RedirectStandardInput = true;
    info.UseShellExecute = false;

    p.StartInfo = info;
    p.Start();

    using (StreamWriter sw = new StreamWriter(p.StandardInput))
    {
        if (sw.BaseStream.CanWrite)
        {
            sw.WriteLine("mysql -u root -p");
            sw.WriteLine("mypassword");
            sw.WriteLine("use mydb;");
        }
    }

答案 1 :(得分:0)

听起来您应该调查重定向标准输入 - 请务必同时将psi.UseShellExecute设置为false。您可能还想重定向标准输出,这样您就可以通过某种方式了解您的子进程正在做什么。

详细了解重定向here