子コマンドを起動する際、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()
|
Copyright © 2013 CA.
All rights reserved.
|
|