Batch file to VBScript file (1) at 1998.Nov.01 1. 概要  WSH (Windows Scripting Host)の言語の1つ、VBScriptの入門書である。  WSHはWindows98なら標準添付、Windows95なら下からダウンロード:  http://www.microsoft.com/japan/developer/scripting/default.htm  後、ドキュメントとして次のファイルが必要。URLは忘れましたが、上のURLの  近くから取ってこれるのでは?(無責任モード) vbsdoc.exe ; 結構な量のhtmファイル。ブラウザで見ることになるが、  余り見やすくない。おまけにIE 3.02ならOKだけどNN 3だと  うまく表示してくんない。さすがMS! wshobj.doc ; WSHのリファレンス。OS付属のWordPadどころかWord95でも  だめ。あたしゃWord97ビューワ(無料)をこのためにダウン  ロードする羽目に。なんてこったい!  といっても大仰に『VBS入門』とやると自爆するので(実際した[爆])、  『DOS窓が出ないバッチ』という見方で何か書いてやろうというのが本文の  主旨である。  なお、JScriptでなくVBScriptであるのは、JScriptだとGUIでの入力が  できないから、ということである(差別反対!>MS)。  InputBox()に相当するものって、JScriptではどう書くのだろうか?  知っていたら是非教えて欲しいです(本当はJScriptをやりたかったのに[泣])。  ちなみに、ブラウザとの連携は全く考慮してないです。あくまでバッチの  代わりに使う、という観点でしか考えません。  更に、CUIで動作させる場合のことも殆ど考慮しません。 2. 言語の特徴  Visual Basicそのもの。それも継続行の「_」をきっちりサポートしていたりと  悪くはない。  留意点として、下図のような構造があると覚えておいた方が良い。多分、これで   +--------------------+ 合っていると思うのだが、違っていたらごめん。   | User script |   +----------+---------+ 何が言いたいかというと:   | VBA | | WSHという核があり、それを呼び出す言語として   +----------+ JScript | VBScriptとJScriptがある。   | VBScript | |   +----------+---------+ JScriptだとそれで終わりだが、VBScriptの方は   | WSH | 従来のVBA (Visual Basic for Application)互換な   +--------------------+ 部分も持っている。   | Windows 95/98 |   +--------------------+ そのため機能が豊富であると共に、同じことを実現  するために複数の方法があったりもする、ということである。   長所:    1. MS製アプリとの相性が良い(WSHのサンプルを見れば一目瞭然)    2. 比較的軽い(98での話。95で起動すると重い)    3. VB、VBAの知識が活用できる    4. GUI上から実行できる(DOS窓が開くような無様なことはない)    5. ショートカット作ったり、レジストリいじったり、という操作が      とっても簡単    6. ファイルの入出力や、文字列や数値処理も簡単   短所:    1. とことん面倒くさいんですけど(;_;)    2. 変な限界がある(WindowsをインストールしたフォルダがC:\Win95なのか、      A:\Winなのか、といったことは分かるけど、Program Filesがどのドライブ      にあるのか、ということは分からない)    3. 字句解析ルーチンを作った奴はきっと酔っぱらっていたに違いない。      所により、大文字小文字はどうでも良かったり、厳密に区別してみたり、      どうも正気とは思えない挙動をする 3. リファレンス  以下、延々と説明を開始する。ここでちょいと事前説明  (VBA) : VBAというかVB互換の機能。だから当然JScriptでは使えない(と、思う)  (WSH) : WSH自体が持つ機能であり、VBScriptやVBA自体の機能ではない(はず)  で、同じような機能がVBAでもWSHでも書ける場合、どちらを使うべきか、という  話が出てくることになる(罪よのぉ>MS)。  どっちでもええのんちゃう?というか、各個人がより美しいと思う方向で選べば  良いと思う。  まぁ、手間がかからない方。という散文的な理由で決めても一向に構わない  ような気もするけど。 3.1 Rem - コメント  VBSでは「Rem」または「'」。 3.2 Echo - 文字列の単純出力  これはGUIではメッセージボックス、ということになると思う。  DOSで良くある、延々とスクロールしていくタイプのものはVBSではちょっと  無理っぽい。  GUIなWindowの中を文字列がずらずらとスクロールしていく、というのも無理  な気がする。  例:   a. もっとも単純(VBA) MsgBox "ハロ〜"   b. 変数の中身も表示(VBA) i = 10 MsgBox "A = " & i    で、これらだと、[OK]ボタンの付いたメッセージボックスが出る。    ウィンドウタイトルは"Visual Basic"である。ちなみに、   c. わざわざ事態をややこしくしたい人向け(WSH) Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.Popup "ハロ〜"    これ、ちゃんとこの2行ないと動かないのでその点、よろしく。   d. VBが嫌いなら(WSH) i = 10 WScript.Echo "ハロ〜", i    とかだと、ウィンドウタイトルが"Window Scripting Host"となる。    タイトルやアイコンまで制御したいとなれば、次のごとし。   e. メッセージボックス(VBA) MsgBox "ほげほげ", vbOKOnly + vbInformation, "タイトル〜"   f. POPUP (WSH) Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.Popup "ほげほげ",, "タイトル〜", 64 ちなみにこの書式の時だけに可能な、ちょっとおもしろい技がある。 上の例の2行目をこう変える。 WshShell.Popup "3秒待て!",3 そう。「,,」で省略したパラメータとは待ち時間だったのである。   さてと。これでタイトルも出たし、アイコンも表示されたはず。   だけど、ここでぽろっとメッセージボックスという名前を出してしまった。   出してしまった以上はしょうがない。次で別途説明します。   (うぅ。早くも破綻が見えてきたか?) (EOF)