C# 在cmd中执行couple命令。只执行一个命令

C# 在cmd中执行couple命令。只执行一个命令,c#,cmd,C#,Cmd,哎呀。在我的“管道”中,有3个命令应该按顺序执行,每个请求必须等到上一个命令结束。现在我已经完成了第一个请求,但是第二个和第三个请求只是跳过了。。。 你能建议如何改变这个“管道”吗 string strCmdText = s1; var startInfo = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true,

哎呀。在我的“管道”中,有3个命令应该按顺序执行,每个请求必须等到上一个命令结束。现在我已经完成了第一个请求,但是第二个和第三个请求只是跳过了。。。 你能建议如何改变这个“管道”吗

string strCmdText = s1;
var startInfo = new ProcessStartInfo
   {
   FileName = "cmd.exe",
   RedirectStandardInput = true,
   RedirectStandardOutput = true,
   UseShellExecute = false,
   CreateNoWindow = true
   };

var process = new Process { StartInfo = startInfo };
process.Start();
process.StandardInput.WriteLine(strCmdText);
process.WaitForExit();

string strCmdText1 = s2;
process.StandardInput.WriteLine(strCmdText1);
process.WaitForExit();

string strCmdText2 = s3;
process.StandardInput.WriteLine(strCmdText2);
process.StandardInput.WriteLine("exit");

谢谢。

让我们看看您的代码:

  • 启动
    cmd.exe
    的实例:

    var process = new Process { StartInfo = startInfo };
    process.Start();
    
  • 将命令写入其标准输入:

    process.StandardInput.WriteLine(strCmdText);
    
    string strCmdText1 = s2;
    process.StandardInput.WriteLine(strCmdText1);
    
  • 然后等待
    cmd.exe
    退出:

    process.WaitForExit();
    
  • 现在,将另一个命令写入其标准输入:

    process.StandardInput.WriteLine(strCmdText);
    
    string strCmdText1 = s2;
    process.StandardInput.WriteLine(strCmdText1);
    
  • 等等,什么?
    cmd.exe
    已在上一步退出,因此您首先无法向其发送命令

  • 然后等待进程退出,但它早就死了:

    process.WaitForExit();
    
  • 重复相同的非工作代码:

    string strCmdText2 = s3;
    process.StandardInput.WriteLine(strCmdText2);
    process.StandardInput.WriteLine("exit");
    
你应该更好地理解现在的问题是什么。执行第一个命令后,
cmd.exe
将退出

有几件事你可以试试:

  • 完全去掉
    cmd.exe
    。除非执行某些批处理脚本,否则可以直接调用预期的可执行文件(如
    python.exe

  • 为3个命令启动3个不同的
    cmd.exe

  • 尝试将一些参数传递给
    cmd.exe
    ,如
    /Q


首先,尝试第一种方法,它是最干净的。

首先,为什么要使用cmd,其次,什么“不起作用”?只需检查代码,一切工作都很顺利。当我编写有意义的代码时,它工作得很好。注意,在您的示例中,在继续编写新命令之前调用
WaitForExit()
。当我尝试这样做时,我永远无法进入下一个命令;在调用
WaitForExit()
时,它仍然处于停滞状态。如果您需要帮助,请提供一个好的代码示例和一个具体的描述,说明您正在尝试做什么,发生了什么,以及这与您想要的有什么不同。请看和@PeterDuniho ok。对不起,我没有提供一个不完整的问题。我有3个命令应该按顺序执行,每个请求必须等到上一个命令结束。现在我已经完成了第一个请求,但是第二个和第三个请求只是跳过了…“它不工作”不是问题描述。如果你不明白为什么,打电话给房屋维修承包商,说“我的水管坏了。这是我房子的照片。出了什么问题,修理它要花多少钱?”然后看看你是否在没有更多信息的情况下得到了估计。