C# 在C中向正在运行的进程传递参数#

C# 在C中向正在运行的进程传递参数#,c#,process,cmd,C#,Process,Cmd,我在运行进程和向它们传递参数方面遇到了一些问题。 我知道如何使用一些参数运行进程 ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c something"); Process p = Process.Start(psi) 问题是,在脚本执行后,进程终止。这就是为什么会有“/c” 但我正在运行多个脚本,我希望在一个进程(“cmd.exe”)中运行它们,而不是每次都启动新进程 有什么解决办法吗 我希望有人明白我在说什么;) 我建

我在运行进程和向它们传递参数方面遇到了一些问题。 我知道如何使用一些参数运行进程

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c something");  
Process p = Process.Start(psi)
问题是,在脚本执行后,进程终止。这就是为什么会有“/c”

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

有什么解决办法吗


我希望有人明白我在说什么;)

我建议您使用批处理文件为可执行文件的执行编写脚本,并调用批处理文件。或者-


听起来您应该研究重定向标准输入-确保还将
psi.UseShellExecute
设置为
false
。您可能还想重定向标准输出,这样您就可以知道您的子进程正在做什么


阅读有关重定向的更多信息。

首先想到的是创建一个批处理文件,尽管内部可能有更好的方法。您是否控制要将参数传递给的程序的应用程序逻辑?为时已晚-0A0D有了。您真的不需要执行streamwriter writeline。您只需调用p.startinfo.filename=“cmd.exe”;p、 startinfo.Arguments=“blah”;p、 start();p、 waitforexit();p、 close();谢谢,这非常有帮助,但我仍然有一些问题。我尝试创建进程并在类的构造函数中启动它,然后在运行脚本时从这个类调用方法。但当我开始这个过程时,它以同样的速度退出moment@kosa:你能将你的代码发布到pastebin并提供链接给我吗?你忘了说“新流程”。
    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;");
        }
    }