Похоже, что вы пропускаете пробел между двумя аргументами файла в конкатенации строк.
perlStartInfo.Arguments = "c:\\Perl\\DOC-MAT.pl " + "c:\\Perl\\comb1.txt" + "c:\\Perl\\comb1.mat";
Должно быть:
perlStartInfo.Arguments = "c:\\Perl\\DOC-MAT.pl " + "c:\\Perl\\comb1.txt " + "c:\\Perl\\comb1.mat";
Возможно, лучшей альтернативой является создание массива или списка строк аргументов и использование string.Join
для выполнения конкатенации.
var args = new List<string>();
args.Add(@"c:\file1");
args.Add(@"c:\file2");
psi.Arguments = string.Join(" ", args);
Вышеуказанное будет работать в .NET4, в предыдущих версиях может потребоваться, чтобы вы вызвали args.ToArray()
перед передачей его методу join.
Важное редактирование: Кроме того, я думаю, что вам нужно поменять последние две строки, чтобы не допустить бесконечного ожидания процесса очистки выходного буфера. Подробнее см. Process.StandardOutput (MSDN) .