GO BACK

Windows Scripting Host教室 その5


「シェルの機能を使う」



■Shellオブジェクトについて

 スクリプトで操作したい一番のものは、ファイルやフォルダ、そしてそれらを管理するデスクトップ画面でしょう。このデスクトップでのさまざまな操作を行なうためのものが「Shell」(シェル)というオブジェクトです。このオブジェクトは、以下のようにして作成します。

Set ○○ = CreateObject("Shell.Application")

 これでShellオブジェクトが作成されます。後は、その中にあるメソッドを必要に応じて呼び出すことで、シェルの機能をスクリプトから利用できるようになります。意外に簡単でしょう?

 このShell.Applicationというのは「オートメーション」と呼ばれるものを使ったオブジェクトです。アプリケーションを外部から利用するのに用意されているのがオートメーションです。このShell.Applicationは、ウィンドウのデスクトップウィンドウを実現しているプログラムのためのオートメーションというわけです。オートメーションは、すべてのアプリで用意されているわけではなく、対応していないと使えませんが、マイクロソフト系の主なアプリはだいたい用意されていると考えていいでしょう。

 ではシェルの例として、ファイル/フォルダのパスを入力してオープンするスクリプトを考えてみましょう。以下のスクリプトをノートパッドなどで記述し、vbs拡張子のテキストファイルで保存します。

str1 = InputBox("パスを入力")
Set Obj = CreateObject("Shell.Application")
Obj.Open str1



 このスクリプトファイルをダブルクリックで起動すると、最初にファイル/フォルダのパスを尋ねてきます。ここで開きたい項目のパスを正確に入力すると、そのフォルダ/ファイルが開かれます。

 ここでは「Open」というメソッドを利用しています。これは開きたいファイル/フォルダのパスを引数で指定すると、それを開く働きをします。まぁ、直接ファイルパスを入力しないといけないんじゃ実用性は低いですが、基本がわかれば、それなりに応用することで簡単なランチャーなど作れそうですね?

 この他にも、シェルには面白そうなメソッドがいろいろと用意されています。いくつか簡単なものをあげておきましょう。

・《Shell》.MinimizeAll
すべてのウィンドウを最小化する
・《Shell》.UnminimizeAll
すべてのウィンドウを最小化から戻す
・《Shell》.TileVertically
ウィンドウをタイリングで整理する
・《Shell》.ShutdownWindows
終了ダイアログを呼び出す

 たった1行で、こういうシェルの面白い機能を呼び出せるというのはなかなか痛快ですね。自作のスクリプトに応用してみると面白いでしょう。

■WSHのShellオブジェクト

 この他に、実はもう1つシェルのオブジェクトがあります。それは以下のようにして作成するものです。

Set ○○ = CreateObject("WScript.Shell")

 これは、WSHに用意されているオブジェクトです。先のShell.Applicationは、シェル・アプリケーションのオブジェクトで、こちらはWSH標準のオブジェクトというわけです。こちらのオブジェクトにも、やはりファイル/フォルダを開くメソッドがあります。それは以下のようなものです。

《Shell》.Run 対象のパス

 このRunは、ファイルやアプリケーションを起動するのに用いられます。非常に面白いのは、パスが通っているアプリに関しては単にファイル名だけで実行できることです。例えば、こんな具合です。

Set Obj = CreateObject("WScript.Shell")
Obj.Run "Notepad.exe"


 これでノートパッドが起動します。Windowsフォルダ内にあるEXEなどは、基本的にファイル名だけでRunできるようです。また、ファイルを開く時に「Obj.Run "Notepad.exe c:¥MyDocuments¥sample.txt"」というようにEXEの後にファイルパスを続けて記すことで、指定のアプリでファイルを開かせることもできます。

 このShellは、システム環境的なものを利用するのに多用されます。例えば、システムが用意する特殊なフォルダなどを利用する際には、このWScript.Shellによるオブジェクトが必須です。

Set Obj = CreateObject("WScript.Shell")
str1 = Obj.SpecialFolders("Desktop")
MsgBox str1



 これは、Desktopフォルダのパスを表示するサンプルです。実行すると、このようにDesktopフォルダのパスを画面に表示します。ここではSpecialFoldersというメソッドでパスを取得していますが、これを利用すれば他にもさまざまな特殊フォルダのパスを得られます。「StartMenu」「Programs」「Favorites」「My Documents」「Recent」「SendTo」といったものぐらい覚えておくと、けっこう重宝することでしょう。

 こうした特殊パスは、Windowsの種類によって置かれているパスが微妙に違っていたりします。どんなWindowsでも同じように動くようなスクリプトを作るためには、SpecialFoldersでパスを取得し、それを利用して操作するのが一番なのです。


■ショートカットを作る

 このWScript.Shellオブジェクトには、他にも機能がいろいろとあります。割と重宝するものとして「ショートカットの作成」があるでしょう。これには「CreateShortCut」というメソッドを利用します。これはショートカットのオブジェクトを作成するもので、これによりショートカットが作成できます。ただし、作った後、「ターゲットファイルの設定」「ショートカットのファイルへの保存」といった手続きをしないといけません。

 実際に、簡単なサンプルを作ってから説明していくことにしましょう。

tgPath = InputBox("ショートカットを作るファイルのパス")
tgName = InputBox("ショートカットのファイル名")

Set Obj = CreateObject("WScript.Shell")
dtPath = Obj.SpecialFolders("Desktop")
scPath = dtPath & "\" & tgName & ".lnk"
Set SCObj = Obj.CreateShortCut(scPath)
SCObj.targetPath = tgPath
SCObj.Save
MsgBox "ショートカットができました。"



 スクリプトを実行すると、どのファイルのショートカットを作成するか、そのパスを入力します。続いてショートカットのファイル名を入力します。すると、デスクトップに指定のショートカットを作成します。

 ここでは、以下のような手順でショートカットの作成をしていることがわかります。

・ショートカットオブジェクトの作成
 Set ○○ = 《WScript.Shell》.CreateShortCut(《作成するファイルパス》)

・ショートカットにターゲットファイルを設定する
 ○○.targetPath = ターゲットのパス

・ショートカットを保存する
 ○○.Save

 この3つの手順は丸ごと覚えてしまって下さい。この通りに実行すれば、ショートカットを作成できます。このショートカットは、ファイルだけでなくWebサイトのURLなども作成できます。この場合、作成するファイルパスは.url拡張子の名前にするということ、またtargetPathに「http://○○.com/」というようにURLを指定するということに注意して下さい。「ショートカットオブジェクトを作り、ターゲットパスを設定し、Saveする」という基本的な手順はまったく同じです。

 この他にもWScript.ShellやShell.Applicationにはさまざまな機能が用意されていますが、とりあえず「ファイル/フォルダの起動」「特殊フォルダのパスの取り出し」「ショートカットの作成」といった基本だけ覚えれば、そこそこ実用的なスクリプトが作れるようになりますよ。



GO NEXT


GO HOME