Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在这段代码中同时传递多个命令_C# - Fatal编程技术网

C# 如何在这段代码中同时传递多个命令

C# 如何在这段代码中同时传递多个命令,c#,C#,我试图从本地文件夹运行cmd,希望同时传递多个命令,例如:一旦我能够运行这个命令,p.StandardInput.WriteLine(“multichain util create chain34”);执行此命令后,我希望传递此命令p.StandardInput.WriteLine(“multichai cli chain 34-daemon”) 将所有与流程相关的内容移动到方法中。将命令列表作为该命令的参数。然后,迭代命令列表并将其全部写入,而不是一个p.StandardInput.Write

我试图从本地文件夹运行cmd,希望同时传递多个命令,例如:一旦我能够运行这个命令,p.StandardInput.WriteLine(“multichain util create chain34”);执行此命令后,我希望传递此命令p.StandardInput.WriteLine(“multichai cli chain 34-daemon”)


将所有与流程相关的内容移动到方法中。将命令列表作为该命令的参数。然后,迭代命令列表并将其全部写入,而不是一个
p.StandardInput.WriteLine()

static void Main()
{
    var commands = new List<string>() { "dir", "mkdir ABC", "dir" };
    ExecuteCmd(commands);

    Console.ReadLine();
}

static void ExecuteCmd(List<string> commands)
{
    Process p = new Process();
    p.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.UseShellExecute = false;
    p.Start();

    foreach (var comm in commands)
        p.StandardInput.WriteLine(comm);

    p.StandardInput.Flush();
    p.StandardInput.Close();
    p.WaitForExit();

    Console.WriteLine(p.StandardOutput.ReadToEnd());
}
static void Main()
{
var commands=newlist(){“dir”、“mkdir ABC”、“dir”};
ExecuteCmd(命令);
Console.ReadLine();
}
静态void ExecuteCmd(列表命令)
{
过程p=新过程();
p、 StartInfo.WorkingDirectory=Directory.GetCurrentDirectory();
p、 StartInfo.FileName=“cmd.exe”;
p、 StartInfo.CreateNoWindow=true;
p、 StartInfo.RedirectStandardInput=true;
p、 StartInfo.RedirectStandardOutput=true;
p、 StartInfo.UseShellExecute=false;
p、 Start();
foreach(命令中的var comm)
p、 标准输入写入线(comm);
p、 StandardInput.Flush();
p、 StandardInput.Close();
p、 WaitForExit();
Console.WriteLine(p.StandardOutput.ReadToEnd());
}

请澄清“同时执行多个命令”的含义。一旦我能够运行此命令,请使用p.StandardInput.WriteLine(“multichain util create chain34”);我想传递这个命令p.StandardInput.WriteLine(“multichai cli chain 34-daemon”);如果我理解正确(可能没有),我会跳过cmd.exe,直接一个接一个地运行多链可执行文件。multichain API有点网络包装器,但我找不到multichain util提供的功能。
static void Main()
{
    var commands = new List<string>() { "dir", "mkdir ABC", "dir" };
    ExecuteCmd(commands);

    Console.ReadLine();
}

static void ExecuteCmd(List<string> commands)
{
    Process p = new Process();
    p.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.UseShellExecute = false;
    p.Start();

    foreach (var comm in commands)
        p.StandardInput.WriteLine(comm);

    p.StandardInput.Flush();
    p.StandardInput.Close();
    p.WaitForExit();

    Console.WriteLine(p.StandardOutput.ReadToEnd());
}