运行perl脚本,通过c#应用程序使用提示符

本文关键字:应用程序 提示符 通过 perl 脚本 运行 | 更新日期: 2023-09-27 18:08:11

尝试从我的c#应用程序调用perl脚本。perl脚本有一个提示,要求用户输入一些东西。我好像没法把它展示出来。这是我用来调用它的函数。我还有另一个函数,它将system . environment . setenvironmtvariable设置为具有"C:'Perl'bin';"路径以及其他进程所需的其他路径。

private void getRevisionAndUpdate()
{
    Process myProcess = new Process();
    myProcess.StartInfo.FileName = "cmd.exe";
    myProcess.StartInfo.WorkingDirectory = @"the directory that has the perl script";
    myProcess.StartInfo.Arguments = @"/c SaidPerlScript.pl";
    myProcess.StartInfo.UseShellExecute = false;
    myProcess.Start();
    myProcess.WaitForExit();
}

就像我之前说的,它似乎可以运行,但它要么只是在记事本中打开脚本,要么什么都不做。还应该注意,我已经尝试运行cmd.exe和perl.exe。CMD似乎在记事本中打开它,perl没有显示应有的提示符。

运行perl脚本,通过c#应用程序使用提示符

不太确定为什么要运行cmd.exe,但如果您通过perl.exe运行它(我的脚本称为a.pl并打印hello):

    static void Main(string[] args)
    {
        Process myProcess = new Process();
        myProcess.StartInfo.FileName = "perl.exe";
        myProcess.StartInfo.WorkingDirectory = @".'";
        myProcess.StartInfo.Arguments = @"a.pl";
        myProcess.StartInfo.UseShellExecute = false;
        myProcess.Start();
        myProcess.WaitForExit();
    }

,它也正确读取STDIN。参考a.pl:

print("Hello'n");
my $a = <STDIN>;
print "You entered " . $a . "'n";