2011-09-16 8 views
2

私はIDL(それを使っている人にPOCを実行しようとしています)には新しく、外部コマンドを実行しようとしています。私が追加したコードの行はこれです:IDL内でspawnコマンドを使用

spawn, 'C:\Program Files\ITT\IDL\IDL80\products\envi48\save_add\visual.exe'

私は、これは外部コマンドを起動するために必要だったことすべてだと思いました。私は、アプリケーションを実行すると、私はコードをステップ実行するために、デバッガを使用することができますし、私はこの行を取得し、ステップオーバー、私の実行ファイルが実行されません。デバッガにエラーの種類を示すメッセージは表示されません。

ファイルvisual.exeをディレクトリに置いて、問題なく手でそれを実行できます。コードを実行したり、エラーを報告したりすることなく、コードを右に進めるようです。

答えて

2

spawnコマンドの使用が正しいです。おそらくvisual.exeは、何らかの理由で途中で 出ている(spawn経由で実行した場合例えば、多分作業ディレクトリあなたの外部プログラムが期待されているもの ではありません。)

あなたはvisual.exeを起動する小さなスクリプトを書いてみてください、そしてませんa pause、 、次にspawnvisual.exeの代わりにラッパースクリプトを直接実行します。それは は、DOSウィンドウが消える前にエラーメッセージが表示される可能性があります。

3

フォームを使用することができます。

spawn, cmd, result, errResult 

はCMDから生成される可能性があるすべてのエラーメッセージを取得します。あなたの特定のケースでは、パスのスペースのために、実行可能ファイルへのパスを引用する必要があると思います。

+0

私は単一のダニがあります。十分ではありませんか? –

+1

一重引用符はIDL用です。 IDLはその文字列を直接OSに渡します。これはパスのスペースのために混乱します。 spawn、 'C:¥Program Files¥ITT¥IDL¥IDL80¥products¥envi48¥save_add¥visual.exe' 'のようなものが必要です – mgalloy

関連する問題