c#中Process类的StandardInput问题
本文关键字:StandardInput 问题 类的 Process | 更新日期: 2023-09-27 18:21:19
我想使用--->Process myProcess=new Process()执行shell行;
这条线有点像:
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);
它继续不起作用,有什么帮助吗?
您应该替换:
pProcess.StandardInput.WriteLine(file.txt);
比如:
try
{
pProcess.StandardInput.Write(File.ReadAllText("file.txt"));
}
finally
{
pProcess.StandardInput.Close();
}
这是假设您可以轻松地将整个文件读取到内存中。如果它是一个大文件,您将希望一次读取一行,并将其传递给
您是否考虑过使用"strings"
?
pProcess.StartInfo.FileName = "pathMyProgram";
pProcess.StartInfo.Arguments = "-optins < file.txt";
还要注意,您需要转义反斜杠,如下所示:
"C:''Path''To''Program.exe"
你应该更好地阅读一些C#初学者指南来掌握基本知识。(除非我遗漏了你问题的意思。)
cmd.exe
程序。他们看起来和行为相似,但仍然是不同的东西。像<
和>
这样的参数是cmd.exe
特有的。如果您将这些参数传递到流程中,它们将被直接传递,您需要手动解析它们。
请参阅此处的答案,特别是第2版和第3版。还可以在这里查看Raymond Chen的博客文章