繁体   English   中英

通过c#在cmd.exe中逐个执行多个命令

[英]multiple command one by one in cmd.exe via c#

我尝试通过c#代码在cmd.exe中运行以下命令。

  1. mkdir myfolder
  2. cd myfolder
  3. git init
  4. git remote set-url origin https://gitlab.company.com/testgroup/server.git
  5. git fetch --dry-run
  6. cd ..
  7. rmdir myfolder

我不知道如何在单个Process.Start();传递所有参数Process.Start(); 运行4个命令后,我将采取输出string ,并做一些操作与string

我试过这样的

        const string strCmdText = "/C mkdir myfolder& cd myfolder& git init & git remote set-url origin https://gitlab.company.com/project.git & git fetch --dry-run & cd .. & rmdir myfolder";
        Process.Start("CMD.exe", strCmdText);

以上命令正常工作。 但我不知道如何从cmd.exe获取执行文本。 我想要的文字如下图所示。

我想要的文字

我使用下面的代码来获取输出string 但是在读取输出的行( string output = cmd.StandardOutput.ReadToEnd(); )时,执行停止了。 我的意思是它不会进入下一行也不会终止程序。 只需显示缺少屏幕。

        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.Arguments = "/C mkdir myfolder& cd myfolder& git init & git remote set-url origin https://gitlab.company.com/project.git & git fetch --dry-run & cd .. & rmdir myfolder";
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo.RedirectStandardOutput = true;
        cmd.StartInfo.RedirectStandardError = true;
        cmd.Start();
        string output = cmd.StandardOutput.ReadToEnd();
        Console.WriteLine(output);

我如何获得输出string

如果您使用'ReadToEnd',您将等待流结束。 您应该使用“Read”或“ReadLine”来读取可用流上下文的部分内容:

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.Arguments = "/C mkdir myfolder& cd myfolder& git init & git remote set-url origin https://gitlab.company.com/project.git & git fetch --dry-run & cd .. & rmdir myfolder";
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.RedirectStandardError = true;
cmd.Start();

while (!cmd.StandardOutput.EndOfStream) {
    string line = cmd.StandardOutput.ReadLine();
    Console.WriteLine(line);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM