JScriptコンソールを進化させてWSHコンソールに。

JScriptだけでなく、VBScriptも使えるWSHのコンソールとなりました。

  1. 特徴
    • JScriptだけでなく、VBScriptも使用可能
      JScriptVBScriptをネストして起動*1できます。JScript()VBScript()というメソッドがあります。
    • コマンドも簡易的に実行可能(JScript)
      JScript//:cmd DOSコマンドとすると、そのDOSコマンドの実行結果が表示されます。
    • historyの保持,echoとpromptの変更対応
      エラーが発生しなかったコマンドの履歴を保持します。
      また、コマンド入力時に表示されるプロンプトの制御ができます。
    • 複数行コマンドにも対応
      • JScriptの場合
        コマンド蓄積中でないとき、;で終わる文字列の入力はすぐに実行されます。;で終わらない文字列の場合、そのコマンドから蓄積を開始します。
        コマンド蓄積中のとき、;のみの入力で蓄積されたコマンドを実行し、\のみの場合は蓄積を破棄します。それ以外の空白だけでない文字列は蓄積されます。
      • VBScriptの場合
        コマンド蓄積中でないとき、_で終わるか、For,Do,While,If,Select,With,Sub,Function,Classのいずれかで始まる文字列の場合、そのコマンドから蓄積を開始し、そうでない場合はすぐに実行されます。
        コマンド蓄積中の場合、_のみの入力で蓄積されたコマンドを実行し、\のみの場合は蓄積を破棄します。それ以外の空白だけでない文字列は蓄積されます。
    • リダイレクトに代わる機能(JScript)
      JScript()で起動したコンソールは標準入力,標準出力,標準エラー出力を利用しますが、JScript(入力ストリーム, 出力ストリーム, エラー出力ストリーム)とすることもできます。*2
  2. 構成
    直接起動しないでください。よく内容を確かめてからご自分の責任で実行してください。
    • WshConsole.wsf:下記のconsole.vbsとconsole.jsをこの順でロードしています。通常はこれを起動します。
    • console.vbsVBScriptのコンソール機能を提供*3しています。単独起動不可*4
    • console.jsJScriptのコンソール機能を提供しています。単独起動も可能です。
  3. オススメ
    • wsfファイルにユーティリティー関数
      既にwrite,writeln,printと私が作ったものを残してあります。
    • バッチファイルで起動
      起動部分はconsole.jsにあり、wscript.exeで起動されていた場合にcscript.exeで起動しなおします。
      なので最初からcscript.exeで起動するバッチファイルを用意すると僅かに起動が速くなります。
      バッチファイルにはCScript //Nologo 起動するファイル*5などと記述します。

【2007/02/23追記】
「リダイレクトに代わる」とか言ってしまった機能はほとんど代わりができていない気がします。ここは作ったばかりなので改良の余地が大いにあると思います。
たとえば、「とあるウェブページにある全てのリンクについて、そのタイトルとリンク先とターゲットの一覧をCSVファイルにまとめる」というお題をやってみました。(追記をする前のこのページでやってみました。)
コンソールのキャプチャ画像

*1:JScriptからJScriptや、VBscriptからVBScriptも可能

*2:入力ストリームから読み込んだ文字列を実行したら標準入力からの入力を要求する場合、処理が停止し復帰不可能(→Ctrl+C)となります。このような処理は記述できません。

*3:私がVBScriptは得意じゃない&好きじゃないので、JScriptに比べて多少貧弱な機能です。

*4:console.jsの冒頭の10行程度を移殖すれば可能と思われます。

*5:現状ではWshConsole.wsfまたはconsole.js