第10回 WScriptオブジェクトを利用する(1)基礎解説 演習方式で身につけるチェック式WSH超入門(1/3 ページ)

WScriptオブジェクトはWSHの基本オブジェクトの1つ。スクリプトの実行環境に関する操作や情報の取得、スクリプトの実行を制御する。

» 2007年05月17日 00時00分 公開
基礎解説 演習方式で身につけるチェック式WSH超入門
Windows Server Insider


「基礎解説 演習方式で身につけるチェック式WSH超入門」のインデックス

連載目次

 前回から少し時間がたったが、皆さんいかがお過ごしだろうか?

 その間、筆者は、Windowsスクリプティングの世界に新たに加わったWindows PowerShellと、この連載で取り上げているWSH(Windows Script Host)を比較し、両者の使い分けを考察する趣旨の記事を書いたので、新しいPowerShellに興味のある方はぜひ読んでいただきたいと思う。

 さて、前回まではVBScriptの文法について述べてきた。今回から数回にわたって、VBScriptを用いてWSHの提供するオブジェクトを使いこなす方法について解説する。

WSHの提供するオブジェクト――WScriptオブジェクト

 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で実行される。


WSHのホスト情報を表示するスクリプト(1)
WScriptオブジェクトのEchoメソッドを用い、WScriptオブジェクトのプロパティのの中から、ホスト実行ファイル情報を表示している。

 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で実行すると次のように表示される。

WSHのホスト情報を表示するスクリプト(2)
Echoメソッドで複数の文字列を引数として渡すと、それらが空白文字で連結された文字列を表示する。

 引数に与えた複数の文字列が自動的に空白文字で連結されて表示されるので便利である。

 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]ボタン付きダイアログが表示される。


       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。