2

Phantom.JS を Windows コンピューターで実行しようとしていますが、BAT ファイルとして動作しています。コンソール ウィンドウを開いて BAT ファイルを起動すると、すべてが機能しているように見えます。とはいえ、出力はコンソールには長すぎるため、.NET コンソール アプリケーション内で同じことを実行したいと考えています。多くのことを試しましたが、「phantom.js は内部コマンドまたは外部コマンドとして認識されていません」というエラーが表示され続けます

BAT ファイル自体は、次のコマンドで構成されています。

phantomjs --config=config.json netsniff.js http://google.com 

ここに私の.NETコードがあります:

Process compiler = new Process();
compiler.StartInfo.FileName = "cmd.exe"; 
compiler.StartInfo.Arguments = "/C C:\\Test\\getpage.bat";
compiler.StartInfo.UseShellExecute = true;
compiler.Start();

誰かが私が間違っていることを理解するのを手伝ってもらえますか? ありがとうございました!

私のためにこれを理解してくれてありがとう。これが実用的な解決策です:

Process compiler = new Process();
compiler.StartInfo.FileName = "cmd.exe";
compiler.StartInfo.WorkingDirectory = "C:\\Test\\";
compiler.StartInfo.Arguments = "/r getpage.bat";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();

File.WriteAllText("C:\\Test\\pageoutput.txt",compiler.StandardOutput.ReadToEnd());

compiler.WaitForExit();
4

1 に答える 1

3

cmd.exeではなく、ファイル名としてバットの場所を指定します

Process compiler = new Process();
compiler.StartInfo.FileName = "C:\\Test\\getpage.bat"; 
compiler.StartInfo.UseShellExecute = true;
compiler.Start();

バットファイルの特定の必要性はわかりませんが。次のようなことができます:

Process compiler = new Process();
compiler.StartInfo.FileName = DirectoryToPhantomJs + "phantomjs"; 
compiler.StartInfo.Arguments = "--config=config.json netsniff.js http://google.com ";
compiler.StartInfo.UseShellExecute = true;
compiler.Start();

2 番目のアプローチの利点は、ファントム js の場所を明示的に指定しているため、「phantom.js は内部コマンドまたは外部コマンドとして認識されません」というエラーが発生しないことです

于 2012-12-19T17:04:51.783 に答える