JScript は Microsoft Windows 上で実行できるスクリプト言語です。Windows Script Host (WSH) に基づくスクリプト言語のひとつで、JavaScript に似た構文を持ちます。WSH には JScript の他にもVBScript があります。この記事では、JScript の使い方を入門者向けにサンプルを交えてご紹介します。
Windows Script Host の JScript は、インタラクティブ・モードとバッチ・モードの2つのモードで実行できる。
スクリプトをインタラクティブ・モードで動作させた場合、メッセージはメッセージ・ボックスで出力される。たとえば、次の内容を hello.js というファイル名で保存する。
WScript.echo("Hello, world!")
これをwscript.exeで実行すると、"Hello, world!" という文字列がメッセージ・ボックスで表示される。
C:\> wscript.exe hello.js
Windows Script Host の JScript は、インタラクティブ・モードとバッチ・モードの2つのモードで実行できる。
スクリプトをバッチ・モードで動作させた場合、メッセージはコンソールの標準出力に出力される。たとえば、次の内容を hello.js というファイル名で保存する。
WScript.echo("Hello, world!")
これををcscript.exeで実行すると、"Hello, world!" という文字列がコンソールに表示される。
C:\> cscript.exe hello.js
複数の文字列を連結するには、演算子「+」を使う。
s = "foo" + "bar" + "baz";
JScript において繰り返し処理を一定回数行うには、for 制御構造を使う。
for (i = 0; i < 10; i++) {
sum += i;
}
配列の各要素について繰り返し処理を行うこともできる。
array = [1, 2, 3];
for (elem in array) {
WScript.Echo(elem);
}
オブジェクトの各プロパティについて繰り返し処理を行うこともできる。
var obj = new Object();
obj.name = "Sato Neo";
obj.addr = "Saga";
obj.age = 15;
for (prop in obj) {
WScript.Echo(prop);
}
※JScript に foreach 文は存在しない。foreach の代わりに for in 制御構造を使用する。
メッセージを出力するには、WScript.Echoメソッドを使用する。
WScript.Echo(message);
引数 message には、出力するメッセージ文字列を指定する。
メッセージを出力するスクリプトのサンプルを次に示す。
WScript.Echo("Hello, world!");
コマンドライン引数を扱うには、WScript.Argumentsオブジェクトを使用する。
コマンドライン引数の個数は、Count()メソッドで参照することができる。また、 n 番目のコマンドライン引数は、WScript.Arguments( n - 1)で参照することができる。
すべてのコマンドライン引数を出力するスクリプトのサンプルを次に示す。
for (i = 1; i <= WScript.Arguments.Count(); i++) {
WScript.echo(WScript.Arguments(i - 1));
}
ホストの実行可能ファイル (CScript.exe または WScript.exe) への絶対パスを返す。このプロパティは読み取り専用である。
WScript.Echo(WScript.FullName);
ホストの実行可能ファイル (CScript.exe または WScript.exe) の格納先ディレクトリの名前を返す。このプロパティは読み取り専用である。
WScript.Echo(WScript.Path);
JScriptを終了する。
WScript.Quit();
終了コードを指定して終了することもできる。
WScript.Quit(1);
実行中のスクリプトへの絶対パスを返す。このプロパティは読み取り専用である。
WScript.Echo(WScript.ScriptFullName);
実行中のスクリプトのファイル名を返す。このプロパティは読み取り専用である。
WScript.Echo(WScript.ScriptName);
指定時間スリープする(指定時間が経過するまで処理を停止する)には、WScript.Sleepメソッドを使用する。
WScript.Sleep(milliseconds);
引数 milliseconds には、待機する時間をミリ秒単位で指定する。
sleep.js
WScript.Sleep(WScript.Arguments(0)*1000)
実行時には、スリープする秒数をsleep.js のコマンドライン引数に指定する。
C:\> cscript.exe sleep.js 60
Windows Script Host のバージョンを返す。このプロパティは読み取り専用である。
WScript.Echo(WScript.Version);
JScript において「//」から行末まではコメントとなる。これを単一行コメントという。
// comment
JScript において「/*」から「*/」まではコメントとなる。間に改行が入ってもよい。これを複数行コメントという。
/*
comment
*/
JScriptで文字列の切り出しを行うには、substring() メソッドを使う。
第1引数には、切り出す最初の位置を0から始まる番号で指定する。
第2引数には、切り出す最後の文字の次の位置を0から始まる番号で指定する。
str = "string";
sub = str.substring(0, 3);
JScriptを実行したときに「文字が正しくありません」とエラーメッセージが表示されることがある。
インタラクティブ・モード(wscript)では次のエラーダイアログが表示される。
スクリプト: | C:\Users\tsuka\ドキュメント\example.js |
行: | 1 |
文字: | 1 |
エラー: | 文字が正しくありません。 |
コード: | 800A03F6 |
ソース: | Microsoft JScript コンパイルエラー |
バッチ・モード(cscript)では次のエラーメッセージが表示される。
C:\Users\tsuka\ドキュメント\example.js(1, 1) Microsoft JScript コンパイル エラー: 文字が正しくありません。
これは、スクリプトファイルをUTF-8で作成していることが原因である。Windows Script Host (WSH) はUTF-8をサポートしていない。スクリプトファイルはANSIまたはUnicodeで作成する必要がある。
JScriptはMicrosoft WindowsおよびInternet Explorer上で動作するが、IE以外のウェブブラウザ上では動作できない。
JavaScriptはIE以外の全てのウェブブラウザ上で動作するが、Microsoft Windows上では動作できない。
ウェブブラウザ | スクリプト |
---|---|
Chrome | JavaScript |
Edge | JavaScript |
Firefox | JavaScript |
Internet Explorer | JScript |
Safari | JavaScript |