正如标题所说,从C#程序执行特定Perl脚本时遇到问题。我在过去甚至在同一个程序中成功完成了它。但是,此特定脚本导致加载“无效操作异常:没有进程与此对象关联。”
陷入困境的代码段如下。 “perl.StartInfo = perlStartInfo;”
抛出异常 public void ParseReviews(string asin)
{
string args = @"'C:\\Users\\Cody\\Documents\\Amazon-downloader-master\\extractAmazonReviews-DivLayout.pl '" + "'C:\\Users\\Cody\\Documents\\Amazon-downloader-master\\amazonreviews\\com\\'" + asin + "'\\ > C:\\reviews.csv'";
ProcessStartInfo perlStartInfo = new ProcessStartInfo(@"c:\Perl\bin\perl.exe");
perlStartInfo.Arguments = args;
perlStartInfo.UseShellExecute = false;
perlStartInfo.RedirectStandardOutput = false;
perlStartInfo.RedirectStandardError = true;
perlStartInfo.CreateNoWindow = true;
Process perl = new Process();
perl.StartInfo = perlStartInfo;
perl.Start();
}
perl脚本可以在下面找到。我可以使用相同的代码顺利执行“downloadAmazonReviews”。 extractAmazonReviews给了我这个问题。 https://github.com/aesuli/Amazon-downloader
它使用来自CMD终端的相同参数执行正常。我在想我正在做空格和字符串文字的错误,但我无法弄清楚。我试过没有'为文字和不同的组合。
如果您想尝试,请输入测试ASIN编号:B00RRDTM1Q
答案 0 :(得分:0)
好的..傻傻的我。我想通了。
显然,"Filepath" > "File"
不是有效的参数。我不得不删除> "file"
然后改变:
perlStartInfo.RedirectStandardOutput = false;
到
perlStartInfo.RedirectStandardOutput = True;
然后使用std out读取输出。
perl.StandardOutput.ReadToEnd();
感谢你们的建议。