试图从文件中将数据作为C#中的cmd行参数传递并遇到问题

ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"myexe.exe";
startInfo1.UseShellExecute = false;
startInfo1.RedirectStandardOutput = true;
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;
startInfo1.WorkingDirectory = @"C:\myfolder\";
startInfo1.Arguments = "-cmd1 x -cmd2 y  < c:\\yesfile.txt";


问题出在
当我调试并抓住.Arguments并从cmd行执行时,效果很好。从代码运行,我得到

Invalid command line parameters: <


到处搜索,我找不到从代码执行此操作(传递数据)的方法。我正在调用的exe不会将“ y”作为cmd行arg接收,因此我必须将其从文件中传入以像这样自动运行它。

更新:如何获取标准输入并传入y(基于答案)-确保您也输入RedirectStandardInput = true;

       StreamWriter inputWriter = myProcess.StandardInput;
                    inputWriter.Write("y");
                    inputWriter.Flush();
                    inputWriter.Close();

最佳答案

这是因为重定向<>等是由外壳程序而不是Windows处理的-您不能在Process.Start中使用它们。

您可以改为使用包含'y'和标志Process.StandardInput的流为startInfo1.RedirectStandardInput = true;设置种子

关于c# - C#启动过程参数传入数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6115867/

10-10 19:48