AirOne v4.7.2とwshの話
地味ですが、AirOne v4.7.2をリリースしました。
- http://www.ariel-networks.com/downloads/releasenote/project_a_v4.html#note02
- http://www.ariel-networks.com/downloads/releasenote/multischedulerv4.html#note03o
マルスケとバージョン番号を合わせた関係で、ProjectAはv4.7.1をスキップした形になります。こういう風にバージョンの数字が飛んだのは初めてです。微妙に気持ち悪いですが、気にしないでください。
リリースとは全く関係無いですが、JVNのリストにアリエルの名前が載りました。名誉なのか不名誉なのか微妙なリストです(もちろん、同意した上で載っています)。個人的には良いことだと思っています。
AirOne v4.7.2のリリースノートに次の新機能があります。
- [サポートツール] LAN内のユーザ発見ツールを追加しました
「サポートツール」と断っているように、普段使うツールではありません。元からあった実行ファイルをwsh(Windows Scripting Host)から呼んで、GUIで見せるようにしただけです。ちなみにwshを「wシェル」と呼んでいます。shがshellの略でないことは知っていますが、どうせ狙って名前をつけたと思っているので、「wシェル」と呼んであげています(最初、本気で間違えていただけ、というのもありますが)。Microsoftへのリスペクトのひとつの形です。
あまり知られていませんが、AirOneでは結構wshを使っています。wshを使うと、JavaScriptでデスクトップアプリが簡単に書けます。欠点は、MS-Windowsでしか動かないことです。ぼくは普段AirOneをGNU/Linuxで使っているので、必須のツールには使えません。なので、wshで書くのは、今回のように(必須ではない)補助ツールが中心になります。
wshの雰囲気をつかむには、次の@ITの記事が役に立ちます。
MSDNの日本語リファレンスは次です。
このふたつのサイトを読めばだいたい事足ります。最近の、覚えることが多くて嫌になる技術に比べて、随分、精神的に楽です。まあできることはファイル操作とプロセス実行ぐらいですが。その程度なら(普通の)シェルとsed(1)の方が良いと考える人が多いかもしれませんが、残念ながら、MS-Windowsにはまだsed(1)がついてきません。
次の2行があることを前提にコード例を示します。
var shell = WScript.CreateObject("WScript.Shell"); var fs = WScript.CreateObject("Scripting.FileSystemObject");
ファイル操作のコード例は次のような感じです。JavaScriptの正規表現で頑張ればsed(1)に近いことができます。
try { var oFile = fs.OpenTextFile('ファイルのパス', 1); var body = oFile.ReadAll(); // 文字列bodyを色々 oFile.Close(); } catch (e) { WScript.Echo('not found'); }
プロセス起動は次のようにします。
var execCmd = 'コマンドパス コマンドライン引数'; shell.Run(execCmd);
コマンドパスのファイルパスが空白を含む場合、"(ダブルクォーテーション)で囲む必要があります。コマンドライン引数でファイルパスを渡す場合も同様です。
子プロセスの標準出力を得るには次のようにします。
var proc = shell.Exec(execCmd); while (!proc.StdOut.AtEndOfStream) { var line = proc.StdOut.ReadLine(); WScript.Echo(line); }
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/airone-v4.7.2-and-wsh/tbping