WSH(JScript) 外部出力関連
WSH(JScript)での外部出力関連まとめ
エコー
関数
WScript.Echo([arg1], [arg2], [arg3], [...])引数
arg1, arg2, arg3
出力するアイテム戻り値
なし
解説
wscript.exe
とcscript.exe
のWSHエンジンによって出力が異なります。wscript.exe
では、グラフィカルなメッセージボックスとして出力されます。cscript.exe
では、コンソールウィンドウに出力されます。
サンプル
WScript.Echo("Hello Wrold.");
結果(wscript.exe)
結果(cscript.exe)
C:\jscript>cscript echo.jse
Hello World
ポップアップメッセージ
解説
wscript.exe
とcscript.exe
のWSHエンジンによって出力は同じです。
グラフィカルなメッセージボックスを表示します。
サンプル
popup.jsevar sh = WScript.CreateObject("WScript.Shell");
var ret = sh.Popup("Hello World.")
WScript.Echo(ret);
結果
補足
詳細な説明は、外部入力関連を参照。
標準出力
関数
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
を書き込みます。既にファイルがある場合、エラーとなります。