WSH(JScript) 外部出力関連

WSH(JScript)での外部出力関連まとめ

エコー

関数
WScript.Echo([arg1], [arg2], [arg3], [...])

引数
arg1, arg2, arg3
出力するアイテム

戻り値
なし
Echo メソッド

解説
wscript.execscript.exeのWSHエンジンによって出力が異なります。
wscript.exeでは、グラフィカルなメッセージボックスとして出力されます。
cscript.exeでは、コンソールウィンドウに出力されます。

サンプル

WScript.Echo('Hello Wrold.');

結果(wscript.exe)
Hello World

結果(cscript.exe)

C:\jscript>cscript echo.jse
Hello World

ポップアップメッセージ

解説
wscript.execscript.exeのWSHエンジンによって出力は同じです。
グラフィカルなメッセージボックスを表示します。

サンプル

var sh = WScript.CreateObject("WScript.Shell");
var ret = sh.Popup('Hello World.')
WScript.Echo(ret);

結果
Hello World

補足
詳細な説明は、外部入力関連を参照。

標準出力

関数
WScript.StdOut.Write(strText)

引数
strText
ストリームに書き込むテキスト

戻り値
なし
Write メソッド (Windows Script Host)

解説
cscript.exeのWSHエンジンでのみ使用可能です。
wscript.exeでは、エラーとなる。
cscript.exeでは、コンソールウィンドウに出力されます。

WScript.Echo関数とは異なり、改行文字は追加されない。基本的には、WScript.Echo関数でこと足りる。

サンプル

WScript.StdOut.Write('Hello Wrold\n');

結果(cscript.exe)

C:\jscript>cscript stdout.jse
Hello World

補足
WScript.StdErr.Write(strText)でエラー出力も可能です。
WScript.StdOut.Write('\b')でカーソルを戻すことが可能です。スペース等を再度書き込むと直前に書いた文字を消すことが可能です。一定周期で文字を書き直すことでアニメーションすることもできる。ただし、カーソルの行移動ができないため、あまり凝ったものは作れない。

テキストファイル出力(FileSystemObject)

解説
Scripting.FileSystemObjectを使用したテキストファイル出力です。
FileSystemObjectは、ファイル最後に追加で書込みを行えます。
FileSystemObjectは、パイプラインを開いたまま逐次書込みを行えます。
FileSystemObjectは、ASCII/SJIS/Unicode(UTF-16LE/BOMあり)での出力を行えます。逆に3つ以外の出力方法は選択できない。

FileSystemObjectは、ログ出力等のパイプラインを常時開いたままの書込みに使用すると良い。

サンプル

var fs, file, filename, iomode, create, format;
filename = "c:\\jscript\\fileout.txt";
                // 1: ファイルを読み取り専用として開く(書き込めない)
                // 2: ファイルを書き込み専用として開く
iomode = 8;     // 8: ファイルの最後に追加して書き込み
create = true;  // true: 新規作成
                // false: 新規作成しない
                // true(-1): Unicode
                // false(0): ASCII
format = -2;    // -2: SJIS(システムデフォルト)
fs = new ActiveXObject("Scripting.FileSystemObject");
file = fs.OpenTextFile(filename, iomode, create, format);
file.Write("Hello World\n");
file.Close();

結果
fileout.txtの末尾にHello World\nを追加する。ファイルがない場合、新規作成する。

テキストファイル出力(ADODB.Stream)

解説
ADODB.Streamを使用したテキストファイル出力です。
ADODB.Streamは、パイプラインを開いたまま逐次書込みは行なえません。
ADODB.Streamは、ASCII/SJIS/UTF-8(BOMあり)/UTF-16LE(BOMあり)/etc...での出力を行えます。標準ではBOMあり前提だが、BOMなし出力も可能です。

ADODB.Streamは、データの一括書込みなど一時的な入出力で使用すると良い。

サンプル

var sr, fullpath, type, option, charset;
fullpath = "c:\\jscript\\fileout2.txt";
type = 2;           // 2: テキストファイル
option = 1;         // 1: 上書きなし
                    // 2: 上書きあり
charset = 'utf-8';  // UTF-8

sr = new ActiveXObject('ADODB.Stream');
sr.Type = type;
sr.Charset = charset;
sr.Open();
sr.WriteText('Hello World\n');
sr.SaveToFile(fullpath, option);
sr.Close();
sr = null;

結果
fileout2.txtファイルにHello World\nを書き込むする。既にファイルがある場合、エラーとなる。

参考

関連

  1. WSH(JScript) 外部出力関連
  2. WSH(JScript) 外部入力関連

コメント: 0

コメントを書く