c#start进程参数传递数据

时间:2011-05-24 19:35:50

标签: c# command-line batch-file

尝试将文件中的数据作为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();

2 个答案:

答案 0 :(得分:3)

这是因为重定向<>等由shell处理而不是由Windows处理 - 您无法在Process.Start中使用它们。

您可以使用包含“y”和标记startInfo1.RedirectStandardInput = true;

的信息流为您的Process.StandardInput播种

答案 1 :(得分:-1)

可能应该是'&gt;'

startInfo1.Arguments = "-cmd1 x -cmd2 y  > c:\\yesfile.txt";