我正在使用此代码从C#程序运行perl脚本:
String config_location = file_path
ProcessStartInfo perlStartInfo = new ProcessStartInfo(@"C:\Perl64\bin\perl.exe");
perlStartInfo.Domain="C:\\e\\oa\\dir_path";
perlStartInfo.FileName = "C:\\Perl64\\bin\\perl.exe";
perlStartInfo.Arguments = "C:\\e\\oa\\Evergreen\\evg\\scripts\\helper\\program.pl" + "-config" + config_location;
perlStartInfo.UseShellExecute = false;
perlStartInfo.RedirectStandardOutput = false;
perlStartInfo.RedirectStandardError = false;
perlStartInfo.RedirectStandardInput = false;
perlStartInfo.CreateNoWindow = false;
perlStartInfo.WorkingDirectory="C:\\e\\oa\\dir_path";
Process perl = new Process();
perl.StartInfo = perlStartInfo;
perl.Start();
perl.WaitForExit();
代码基本上是从这里获得的 - https://social.msdn.microsoft.com/Forums/vstudio/en-US/ea9455e1-b254-49e1-99df-41718ea80b5b/how-to-run-perl-scripts-in-c
file_path是程序的参数。 dir_path是程序应该查找所需数据的地方。 program.pl是我试图使用的perl脚本。
通过命令行运行脚本没有问题。 当使用我的代码运行时 - 似乎perl脚本根本不运行(我不确定),如果它运行并且失败,我没有得到程序的输出。
答案 0 :(得分:4)
也许你错过了Arguments中的空白?
perlStartInfo.Arguments = "C:\\e\\oa\\Evergreen\\evg\\scripts\\helper\\program.pl -config " + config_location;