[VBScriptテクニック] スクリプトでのコマンド実行と情報伝達手法

こんにちは、 ILM 一家のパパ(お父さん)です。
今朝の天気の微妙ですね、でも梅雨というほど雨は降って居ない気がしますが、今年の夏の水不足は大丈夫なのでしょうか。私の、折り畳み傘は、残念ながらまだ出番がありません。

さて今回は、前回の VBScript から実行したプログラムや別なスクリプトと、呼び出し元の VBScript 間での情報伝達手法をご紹介しましょう。
VBscript には、プロセス間通信の機能は残念ながらありません。そのため、COM インターフェースを持たない実行ファイルを起動して情報伝達を行うような場合の手段として、起動したアプリケーションとの情報伝達に標準入出力を用いる方法が考えられます。標準入出力により、Exec メソッドで起動した プロセスと起動もとのプロセス間で、同じ情報をやり取りするわけです。

Windows Scripting Host (WSH) の WshShell には、標準入出力を介した文字情報の伝達を行うためのプロパティとして以下が用意されています。

<StdOut プロパティ >
機能:Exec オブジェクトの書き込み専用の stdout 出力ストリームを公開します。
構文 : Object.StdOut
https://msdn.microsoft.com/ja-jp/library/cc364386.aspx

<StdIn プロパティ >
機能: 現在のスクリプトで使用する読み取り専用の入力ストリームを公開します。
構文 : object.StdIn
https://msdn.microsoft.com/ja-jp/library/cc364492.aspx

上記 StdOut プロパティのリンクを見ていただくと、標準入出力を使用して起動したバッチ動作を制御するVBscript サンプルが用意されています。本原稿はおってバージョンアップし、サンプルスクリプトを紹介したいと考えていますが、まずは、こちらをご覧いただいて参考にされると良いでしょう。

なお、はじめにお話すべき点でしたが、標準入出力は スクリプトをコマンドラインのモードで動作させる必要があるため、VBS ファイルを CScript で実行する必要があります。(デフォルトの GUI のモードでは WScript で実行されます。)
また、標準入出力のバッファは容量に制限があるため、大量の文字を標準出力に送信すると、標準入力から文字を参照するまでの標準出力への出力動作が制限され出力位置でスクリプトが停止します。大量の文字列をやり取りする場合は、処理動作が遅くなりますが、ファイルを介した方が楽な場合もありますので、ご注意下さい。
ブログ書き込み中に寝落ちして、起き掛けにブログ更新してる

~ お父さんより ~