JScript シェル
via http://moz-addon.g.hatena.ne.jp/ZIGOROu/20071122/1195761296 (など)
気のせいか JScript シェルブームでしょうか。自分が使ってるのを晒してみよう。
基本は入力文字列を eval して、戻りがあれば表示する。コマンドプロンプトから実行すればなぜか↑↓キーで履歴が使える。
D:\scripts\js\ijscript>cscript //nologo ijsc.js ijsc> var o = {n: 1, s: "a"} ijsc> o [object Object] ijsc> o.n 1 ijsc> p TypeError: 'p' は宣言されていません。
function は必要になった時にちょこちょこ追加している。
よくある表示系。
ijsc> print(o.s) a ijsc> dump(o) n: 1 s: a
time() は処理時間の計測。Firebug のまね。sleep() はそのまま。
ijsc> time(1); sleep(1234); time(1) 1234ms
run() はプログラム実行。まず使わない。
ijsc> run('notepad')
create() で COM いじり。単に new ActiveXObject() とか入力するのがめんどいだけ。大文字が苦手。
ijsc> var excel = create('excel.sheet', {application: {visible: 1}}) ijsc> excel.activesheet.cells(1,1).value = 'foo' foo ijsc> excel.saveas('zzz') True ijsc> excel.application.quit()
files() でファイル名取得。正規表現でフィルタ。
ijsc> files('libs').join('\n') D:\scripts\js\ijscript\libs\isbn.js D:\scripts\js\ijscript\libs\zzz.js ijsc> files('libs', /zzz/).join('\n') D:\scripts\js\ijscript\libs\zzz.js
load() でライブラリ読み込み。
ijsc> load('libs/isbn.js') ijsc> ISBN [object Object]
ディレクトリ指定でそこにある js ファイルすべて。
ijsc> load('libs') ijsc> Zzz [object Object]
Web からも読み込みできる。ライブラリを試用するときとかに使う。
ijsc> "str".toSource() TypeError: オブジェクトでサポートされていないプロパティまたはメソッドです。 ijsc> load('http://coderepos.org/share/browser/lang/javascript/Object.toSource/lib/Object/toSource.js?format=raw') ijsc> "str".toSource() (new String("str"))
proxy() でプロキシ指定。うちの会社からは串を通さないと出れません…。監視してるらしいよ。こわいね。
ijsc> proxy({host: 'proxy.example.com:8080', userid: 'foo', password: 'bar'})
quit() で終了するけど、めんどいので Ctrl-C で。
ijsc> quit()
引数で読み込むファイル名やディレクトリ、URL を指定できる。ユニットテストするときによく使ってる。
−q はシェルモードにならずに終了。
D:\scripts\js\ijscript>cscript //nologo ijsc.js -q libs libs\tests\lib\test libs\tests\tests.js OK - [f, ] ... OK - [eq, 978-1-59059-727-9, 978-1-59059-727-9] OK: 37, NG: 0, 100 D:\scripts\js\ijscript>
−e でワンライナー。SAPI.SpVoice すごいね(ネタ元 ZIGOROu さん)
D:\scripts\js\ijscript>cscript //nologo ijsc.js -e "new ActiveXObject('SAPI.SpVoice').Speak('JScript++')"
ソースは読まないほうがいいです。
続きを読む