第10回 WScriptオブジェクトを利用する(1):基礎解説 演習方式で身につけるチェック式WSH超入門(1/3 ページ)
WScriptオブジェクトはWSHの基本オブジェクトの1つ。スクリプトの実行環境に関する操作や情報の取得、スクリプトの実行を制御する。
前回から少し時間がたったが、皆さんいかがお過ごしだろうか?
その間、筆者は、Windowsスクリプティングの世界に新たに加わったWindows PowerShellと、この連載で取り上げているWSH(Windows Script Host)を比較し、両者の使い分けを考察する趣旨の記事を書いたので、新しいPowerShellに興味のある方はぜひ読んでいただきたいと思う。
さて、前回まではVBScriptの文法について述べてきた。今回から数回にわたって、VBScriptを用いてWSHの提供するオブジェクトを使いこなす方法について解説する。
WSHの提供するオブジェクト――WScriptオブジェクト
■連載目次
第1回 WSHを始めよう
第2回 VBScript基本(1)文字列の入出力
第3回 VBScript基本(2)計算と分岐処理
第4回 関数を使いこなす:文字列、数値、日付
第5回 データ型について理解を深めよう
第6回 VBScriptの配列を極める
第7回 Subプロシージャで処理を定義
第8回 Functionプロシージャで関数を定義
第9回 VBScriptのオブジェクトを使いこなす
第10回 WScriptオブジェクト(1)
第11回 WScriptオブジェクト(2)
第12回 WshShellオブジェクト(1)
第13回 WshShellオブジェクト(2)
第14回 WshShellオブジェクト(3)
第15回 WshNetworkオブジェクト
第16回 FileSystemObjectオブジェクト(1)
第17回 FileSystemObjectオブジェクト(2)
第18回 FileSystemObjectオブジェクト(3)
第19回 TextStream/Dictionaryオブジェクト
WSHの提供するオブジェクトは数多く存在するが、その中からまずは基本となるWScriptオブジェクトを解説する。WScriptオブジェクトはWSHが起動する際に自動的にインスタンス化されるオブジェクトなので、Dimステートメントを用いた変数宣言、およびSetステートメントを用いたオブジェクトの代入を行う必要はなく、「WScript.<プロパティやメソッド>」のように直接呼び出すことができる。なお、このような動作は前回解説したErrオブジェクトと似ているが、ErrオブジェクトはVBScriptのオブジェクトなので、Internet Explorer上で表示されるHTML文書内のスクリプトなどでも用いることができるが、WScriptオブジェクトはWSH固有の機能なので、HTML中では使用できない。 WScriptオブジェクトはスクリプトの動作を設定・取得するためのプロパティ群と、スクリプトの制御を行うためのメソッド群で成り立っている。まずはその一覧をお目に掛けよう。
プロパティ | ||
---|---|---|
WSH実行ファイルの情報 | Name:WSHの実行ファイル名 | |
Path:WSHの実行ファイルのあるフォルダ・パス | ||
FullName:WSHの実行ファイルパス | ||
Version:WSHのバージョン | ||
スクリプトの情報 | ScriptName:スクリプトのファイル名 | |
ScriptFullName:スクリプトのフルパス | ||
Interactive:バッチモードorインタラクティブモード | ||
TimeOut:タイムアウトの秒数 | ||
Arguments:コマンドライン引数の情報 | ||
標準入出力 | StdIn:標準入力 | |
StdOut:標準出力 | ||
StdErr:標準エラー出力 | ||
WScriptオブジェクトのプロパティ |
メソッド | ||
---|---|---|
メッセージ表示 | Echo:メッセージを表示 | |
スクリプト実行制御 | Quit:スクリプトの終了 | |
Sleep:スクリプトの一時停止 | ||
オブジェクトの取り扱い | CreateObject:オブジェクトの作成 | |
ConnectObject:オブジェクトに接続 | ||
DisconnectObject:オブジェクトを切断 | ||
GetObject:オブジェクトの取得 | ||
WScriptオブジェクトのメソッド |
この表に従って、それぞれのプロパティとメソッドの使い方を見ていこう。
WSH実行ファイルの情報を取得するプロパティとメッセージ表示メソッド
まずは、簡単なプロパティとメソッドから紹介する。前回述べたオブジェクトの話を念頭に置いて読み進んでいただきたい。まずはWSHのホスト実行ファイルの情報を取得するスクリプトを取り上げる。
※ファイル:ShowWSHInfo.vbs
Option Explicit
WScript.Echo "WSHの実行ファイル名:" & WScript.Name & vbCrLf & _
"実行ファイルのあるフォルダ・パス:" & WScript.Path & vbCrLf & _
"実行ファイルのフルパス:" & WScript.FullName & vbCrLf & _
"バージョン:" & WScript.Version
このスクリプトをwscript.exeで実行すると(*)、次のようなOKボタン付きのダイアログが表示される。
* 第1回で述べたとおり、WSHにはGUI版のwscript.exeとCUI版のcscript.exeの2つの実行ファイルが存在する。スクリプトのファイル名を例えばShowWSHInfo.vbsとすると、wscript.exeで実行するにはコマンド・プロンプト上で「wscript.exe ShowWSHInfo.vbs」とする。もしくはエクスプローラ上でShowWSHInfo.vbsをダブル・クリックすると、デフォルトの設定ではwscript.exeで実行される。
WScriptオブジェクトのEchoメソッドは、引数に文字列を取り、その内容を表示するメソッドである。また、WScriptオブジェクトの各プロパティを参照することで、ホスト実行ファイルの情報(名前、フォルダ・パス、ファイルのフルパス、バージョン)を取得している。これらのプロパティによってWSHが古いバージョン(例えば2.0など)の場合に処理をとりやめたり(これは後で述べるQuitメソッドを併用する)、ホストがwscript.exeかcscript.exeかを判別したりできる。
Echoメソッドは「,(カンマ)」で区切って複数の引数を取ることができ、指定した文字列が連結された結果を表示する。すなわち最初のスクリプトは次のように簡便に記述できるということである。
※ファイル:ShowWSHInfo2.vbs
Option Explicit
WScript.Echo "WSHの実行ファイル名:" , WScript.Name , _
"実行ファイルのあるフォルダ・パス:" , WScript.Path , _
"実行ファイルのフルパス:" , WScript.FullName , _
"バージョン:" , WScript.Version
このスクリプトをwscript.exeで実行すると次のように表示される。
引数に与えた複数の文字列が自動的に空白文字で連結されて表示されるので便利である。
EchoメソッドはVBScriptのMsgBox関数と動作が似ているが、これらのスクリプトをcscript.exeで実行すると異なった挙動を示す。1つ目のスクリプトをcscript.exeで実行すると次のようになる。
WSHのホスト情報を表示するスクリプト(1)をcscript.exeで実行
Echoメソッドの引数に与えた文字列が直接コマンド・プロンプト内に表示される。FullNameプロパティの値がC:\WINDOWS\system32\cscript.exeになっていることにも注目。
OKボタン付きのダイアログが表示されるのではなく、このようにコマンド・プロンプト内に直接表示される。また、Echoメソッド実行時にスクリプトが中断されないので、スクリプトの経過表示をするのに便利である。ちなみにcscript.exe内でEchoメソッドを用いると、改行文字が自動的に付加されるので、1つ目のスクリプトは次のように書き換えても同様の結果が得られる。cscript.exeで実行する際にはこちらの書き方が直感的だろう。
※ファイル:ShowWSHInfo3.vbs
Option Explicit
WScript.Echo "WSHの実行ファイル名:" , WScript.Name
WScript.Echo "実行ファイルのあるフォルダ・パス:" , WScript.Path
WScript.Echo "実行ファイルのフルパス:" , WScript.FullName
WScript.Echo "バージョン:" , WScript.Version
※wscript.exeでこのスクリプトを実行すると1行ごとに[OK]ボタン付きダイアログが表示される。
Copyright© Digital Advantage Corp. All Rights Reserved.