プログラムは、1番目の引数がrに入り、2番目の引数がcに入って、
r行×c列のかけ算の表を作ります。
WScript.Argumentsは
Argumentsオブジェクトを返します。
このようにWSHをawkやPerlの代わりに使うことができます。
いままでPerlで見栄えのよくないプログラムをやむを得ず作っていた人(って私か)
も、これで少しはましなプログラムを組むことができるでしょう。
scripts/start.js
---------------------
WScript.Echo("ほえ");
拡張子は、JavaScriptなら.js、VBScriptなら.vbsとします。
ここではJavaSCriptを使ったので、start.jsというファイル名にしました。
もしVBScriptならば、VB(A)の経験者なら分かるとおり、
WScript.Echo "ほえ"
とします。
このスクリプトを実行するには2つの方法があります。
Echo メソッドは文字列を引数としますが、
文字列でない場合は toSting メソッドを適用します(12/25/01)。
ファイルをダブルクリックします。コマンドプロンプトで
>wscript filename
としても同じです。「ほえ」と表示されたメッセージボックスが表示されます。
コマンドプロンプトで
>cscript filename
とします。「ほえ」と標準出力されます。
scripts/echo.js
------------------------------------------------------------
var v = new vector(0, 1, 2);
WScript.Echo(v); //(0, 1, 2)
//vectorオブジェクト
function vector(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
this.toString = vtostring; //toStringメソッド
}
function vtostring() {
return "(" + this.x + ", " + this.y + ", " + this.z + ")";
}
ただ、特定のオブジェクトはその限りではないようです(12/28/01)。
scripts/echo.js
------------------------------------------------------------
//Numberオブジェクト
var a = 1e-7
WScript.Echo(a); //0.0000001
WScript.Echo(a.toString()); //1e-7
//VBのDate型オブジェクト
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var WShell = WScript.CreateObject("Wscript.Shell");
var dsktop = fs.GetFolder(WShell.SpecialFolders("Desktop"));
WScript.Echo(dsktop.DateLastModified); //2000/12/29 18:41:10
WScript.Echo("" + dsktop.DateLastModified); //Fri Dec 29 18:41:10 UTC+0900 2000
//Booleanオブジェクト
var b = true;
WScript.Echo(b); //-1
WScript.Echo(b.toString()); //true
Microsoft (R) Windows Scripting Host Version 5.0 for Windows
Copyright (C) Microsoft Corporation 1996-1997. All rights reserved.
などと表示されると思いますが、これを避けるためには、
>cscript //nologo filename
とします。
>cscript //nologo mtable.js 6 7 > mtable.htm
ここでは、6 と 7 が引数になっています。
リダイレクトで標準出力がmtable.htmに書き出されます。
scripts/mtable.js
------------------------------------------------------------
//かけ算の表を作るプログラム
var r, c, i, j;
var objArgs = WScript.Arguments;
//引数の処理(かなり甘い)
if(objArgs.length != 2) //引数の数が2でないなら
QuitForError();
if((r = parseInt(objArgs(0))) <= 0)
QuitForError();
if((c = parseInt(objArgs(1))) <= 0)
QuitForError();
//表を作る
WScript.Echo("<HTML>\n<BODY STYLE=\"text-align:center;\">");
WScript.Echo("<TABLE BORDER>");
for(i = 1; i <= r; i++) {
WScript.Echo("<TR>");
for(j = 1; j <= c; j++)
WScript.Echo("<TD>" + i * j + "</TD>");
WScript.Echo("</TR>");
}
WScript.Echo("</TABLE>\n</BODY>\n</HTML>");
function QuitForError() {
WScript.Echo(
"usage : cscript //nologo mtable.js nrows ncolumns");
WScript.Quit(); //プログラムを終了する
}
このプログラムを実行すると、次のようなHTMLファイルが生成されます。
objArgs.lengthで引数の個数を返します。
上の例では2を返します。
objArgs(0)で最初の引数を返します。
objArgs(1)で2番目の引数を返します。
もっとも、本当のWSHの価値はアプリケーションを直接制御できるところにあります。
第6回からはそちらについて紹介したいと思います。