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)

HelloWorld

結果(cscript.exe)

C:\jscript>cscript echo.jse
Hello World

ポップアップメッセージ

解説

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

サンプル

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

結果

HelloWorld

補足

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

標準出力

関数
WScript.StdOut.Write(strText)

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

戻り値
なし

Write メソッド (Windows Script Host)

解説

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

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

サンプル

stdout.jseWScript.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は、パイプラインを開いたまま逐次書込みできます。
FileSystemObjectは、ASCII/SJIS/Unicode(UTF-16LE/BOMあり)で出力できます。逆に3つ以外の出力方法は選択できません。

サンプル

fileout.jsevar 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は、データの一括書込みなど一時的な入出力で使用できます。
ADODB.Streamは、ASCII/SJIS/UTF-8(BOMあり)/UTF-16LE(BOMあり)/etc...での出力ができます。標準ではBOMありで出力します。ですが、BOMなし出力も可能です。

サンプル

fileout2.jsevar 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) 外部出力関連
  3. WSH(JScript) 外部入力関連