试图从文件中将数据作为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/