C#执行Perl脚本 - 语法问题?

时间:2015-05-14 05:16:01

标签: c# perl

正如标题所说,从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

1 个答案:

答案 0 :(得分:0)

好的..傻傻的我。我想通了。

显然,"Filepath" > "File"不是有效的参数。我不得不删除> "file"

然后改变:

perlStartInfo.RedirectStandardOutput = false;

 perlStartInfo.RedirectStandardOutput = True;

然后使用std out读取输出。

perl.StandardOutput.ReadToEnd();

感谢你们的建议。