[英]multiple command one by one in cmd.exe via c#
我尝试通过c#代码在cmd.exe中运行以下命令。
我不知道如何在单个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.