我想使用--->执行shell行。处理myProcess = new Process();
该行类似于:
pathMyProgram -options < file.txt
我已经完成了
Process pProcess = new System.Diagnostics.Process();
pProcess.StartInfo.FileName=pathMyProgram;
pProcess.StartInfo.Arguments=-optins < file.txt
... 但它不起作用(由于重定向...)
所以看完后我试过了
enter code here
Process pProcess = new System.Diagnostics.Process();
pProcess.StartInfo.FileName=pathMyProgram;
pProcess.StartInfo.Arguments=-optins
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
pProcess.Start();
pProcess.StandardInput.WriteLine(file.txt);
它继续没有工作,有任何帮助吗?
答案 0 :(得分:1)
你应该替换:
pProcess.StandardInput.WriteLine(file.txt);
有类似的东西:
try
{
pProcess.StandardInput.Write(File.ReadAllText("file.txt"));
}
finally
{
pProcess.StandardInput.Close();
}
假设您可以轻松地将整个文件读入内存。如果它是一个大文件,你需要一次读一行并将其传递给
答案 1 :(得分:0)
您考虑使用"strings"
吗?
pProcess.StartInfo.FileName = "pathMyProgram";
pProcess.StartInfo.Arguments = "-optins < file.txt";
另请注意,您需要转义反斜杠,如下所示:
"C:\\Path\\To\\Program.exe"
你应该更好地阅读一些C#初学者指南来掌握基础知识。 (除非我错过了你问题的意思。)
答案 2 :(得分:0)
不要混淆shell重定向和cmd.exe
程序。他们看起来和行为相似,但仍然是不同的东西。 <
和>
等参数特定于cmd.exe
如果您将这些参数传递到您的流程中,它们将按字面传递,您需要手动解析它们。
请参阅answer here,特别是编辑2和3.还要结帐Raymond Chen's blog post on it here