2016-09-20 16 views
2

私のC#アプリケーションからperlスクリプトを呼び出そうとしています。 perlスクリプトには、ユーザーが何かを入力する必要があるプロンプトがあります。私はそれを表示するように見えることはできません。これは私がそれを呼び出すために使用する関数です。 System.Enviroment.SetEnvironmtVariableに "C:\ Perl \ bin \;"というパスを設定する別の関数があります。他のものは、他のプロセスのために必要と一緒にそれを実行しているようだが、それはどちらかだけのメモ帳でスクリプトを開いたり、まったく何もしません前に私が言ったようにC#アプリケーションからのプロンプトを使用するperlスクリプトの実行

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が表示されないようにします。

答えて

3

理由(私のスクリプトがa.plとプリントhelloと呼ばれている)あなたはcmd.exeを実行しようとしているが、あなたはperl.exeを経由して、それを実行した場合、それが動作する非常にわからない:

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"; 
+0

問題は私が思うようなコマンドとしてスクリプトを渡していました。私はコードの別のセクションから "/ c"をコピーしました。これのためにそれを必要としませんでした。 – dstew

関連する問題