尝试将文件中的数据作为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";
问题在于&lt; 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();
答案 0 :(得分:3)
这是因为重定向<
,>
等由shell处理而不是由Windows处理 - 您无法在Process.Start中使用它们。
您可以使用包含“y”和标记startInfo1.RedirectStandardInput = true;
Process.StandardInput
播种
答案 1 :(得分:-1)
可能应该是'&gt;'
startInfo1.Arguments = "-cmd1 x -cmd2 y > c:\\yesfile.txt";