Tech-Ezo (Hokkaido PC and Network Users Group)
 Top Page  |  What's Tech-Ezo  |  Next Seminar  |  Seminar Log  |  Seminar Plan  |  Tips  |  life  |  Link  |
Scr.003 ステップアップ WSH - うんちくはほどほどに
前ページへ   [ステップアップ WSHへ戻る]   次ページへ

■  R23.004  はじめる前にこれだけは覚えておきましょう
■ ■

 これからWSHでスクリプトを作成・起動するにあたって、最低限覚えておいた方が良い「デバック」と「無限ループしたときの対応」について簡単に説明します。

デバック方法

 どんなに短いスクリプトでも人間が作っている以上タイピングミスをしてしまうものです。これは実行時にエラーとなるわけですが、数行のプログラムですと最初から見直して間違った箇所を特定できますが、数十行、数百行になると日が暮れてしまいます。

 そこでWSHでは、実行出来ずにエラーとなった場所と簡単なエラー原因を教えてくれるようになっています(親切ですね)。まず、下記のスクリプトを作成して見ましょう。

debug.vbs
WScript.Echo "今日は"
WScript.Ech "TechEzo Round 23"
WScript.Echo "お題はWSHです"

 2行目の"WScript.Ech"の最後の"o"が抜けている状態ですが、このままタイピングしてください。出来たら、コマンドプロンプトから実行してみましょう。

エラーメッセージ例
C:\script>cscript debug.vbs
今日は
C:\script\debug.vbs(2, 1) Microsoft VBScript 実行時エラー: オブジェクトでサポー
トされていないプロパティまたはメソッドです。: 'WScript.Ech'

 スクリプトを起動すると、1行目の「今日は」は表示されましたが、その後エラーとなってしまいました。エラーメッセージをよく見てみると、まず最初に"C:\script\debug.vbs(2, 1)"と表示されています。これは、エラーとなったスクリプト名と、エラーとなった行(カッコ内の最初の数字)、エラーとなったカラム(かっこ内の2番目の数字)を意味しています。訳すると「c:\script\debug.vbs内の2行目の1カラム目あたりでエラーとなりました」ということです。

 次に表示されているのがエラーの内容(エラー原因)です。ここでは、『「WScript.ech」なんてメソッド(やプロパティ)はないよ』と言っています。これだけの情報ですが、エラーとなっている場所の特定には十分に役に立つでしょう。作成したスクリプトがエラーになったときは、闇雲にスクリプトを見直すことはせずに、冷静にエラーメッセージを読みましょう。

無限ループしたら...

 プログラムは通常、上から順番に処理して行って最後の行を処理したら終了します。ところが、繰り返し制御を行っていて終了条件を間違えると、無限ループに陥ってしまいます。試しに、下記のスクリプトを作成し実行して見てください。

loop.vbs
Do
  Wscript.Echo "くるくるぅ〜"
Loop

無限ループ実行例
C:\script>cscript loop.vbs
くるくるぅ〜
くるくるぅ〜
くるくるぅ〜
くるくるぅ〜
くるくるぅ〜
くるくるぅ〜
くるくるぅ〜
[Ctrl]+[C]
^C

 実行すると上記のように「くるくるぅ〜」と永遠に表示しつづけます。この状態になったら[Ctrl]+[C]を押下することで強制終了されます。やってみてください。どうですか?終了できましたか?。

 ところで上記のスクリプトをダブルクリックや、wscriptで起動すると[Ctrl]+[C]では終了できなくなってしまいます。やって見ると分かりますが、「くるくるぅ〜」と表示されたメッセージボックスが表示され「OK」ボタンを何度クリックしても、しつこく「くるくるぅ〜」と表示してきます。

 この状態に陥ったら、タスクマネージャから終了します。タスクマネージャを起動し、「アプリケーション」タブに表示された「Windows Script Host」の行をクリックして反転表示させます。その後、「タスクの終了」をクリックすることで処理を終了させることができます。

 あれ?、でもまだ先程のメッセージボックスが表示されたままですね。ちょっと待つと「プログラムの終了」メッセージが表示されますので、「すぐに終了」をクリックしましょう。そうすると、今度は「くるくるぅ〜」も終了されたはずです。

※補足: 講習中に受講者の方から質問がありました。「メッセージ表示のないループだと、タスクマネージャに表示されませーん!」。確認して見たところ、確かにメッセージ表示がない場合は表示されませんでした。実は、未だにこの対処方法を発見できていません。皆様気を付けましょう。何か情報をお持ちの方、メール待ってます;-)



前ページへ   [ステップアップ WSHへ戻る]   次ページへ
-
※全ては自己責任でお願いします。
※当サイトに関するご連絡は tomomo_c@hotmail.com までお願いします。
最終更新日 2004.3.16