前のトピック: オペレーティング システムへのアクセス次のトピック: スクリプトの実行


OSRedirect クラスの使用

子コマンドを起動する際、AutoShell では、事前定義されている OSRedirect クラスを使用して出力をリダイレクトします。 出力をリダイレクトして子プロセスのリターン コードを取得するには、OSRedirect オブジェクトを作成し、コマンドを呼び出す際にオプションの -output 節を使用して渡します。

out = new OSRedirect();
! dir –output out

AutoShell コンソールでこのコマンドを対話形式で実行した場合、情報はコンソールに表示されません。 指定されたオブジェクトに出力はリダイレクトされます。 コマンド完了後、指定したオブジェクトのメソッドを呼び出し、コマンド実行に関する情報を取得します。

? "コマンドの実行時にエラーが発生しました: ", out.errorOccurred()
? "コマンドの完了状況: ", out.hasCompleted()
? "コマンドで生成された出力: ", out.output()
? "コマンドのリターン コード(エラー レベル): ", out.result()

メソッドの output() と result() で必要な情報を取得できます。 output() メソッドは、完全なディレクトリ リストを 1 つの文字列で返します。 標準的な JavaScript の文字列関数を使用してこの出力をさらに処理できます。 たとえば、行を解析して配列に格納し、一行ずつ表示します。

lines=out.output().split("¥n");
for(i=0;i<lines.length;i++)qout(lines[i]);

dir オペレーティング システム コマンドを ! AutoShell コマンドで起動する場合、! コマンドを発行する前に OSRedirect オブジェクトを 割り当てます。 この手順を省略するために、!! コマンドを使用して OS コマンドを起動することも できます。 !! コマンドは OSRedirect オブジェクトを作成し、指定された変数に OSRedirect オブジェクトが割り当てられていない場合は、この OSRedirect オブジェクトを割り当てます。

以下のコマンドは、OSRedirect オブジェクトが明示的に割り当てられていなくても、現在のディレクトリ リストを変数 out に出力します。

!! dir -output out

!! コマンドを オプションの -output 節を指定せずに発行すると、ディレクトリ情報は変数 $$stdout に自動的に書き込まれます。

!! dir
? $$stdout.output()