第6回 WshShellオブジェクトの詳細(2):Windows管理者のためのWindows Script Host入門(1/3 ページ)
スクリプトで環境変数をうまく使えば、システムやユーザーに応じて柔軟に処理を切り替え可能なスクリプトを作成できる。
前回に引き続きWshShellオブジェクトについて解説する。WshShellオブジェクトは、プログラムの実行やプログラムへのキー・ストロークの送信、環境変数の取得と設定など、OSに対する各種の処理を行うオブジェクトである。
特殊フォルダの取得―― SpecialFoldersプロパティ ――
Windows環境では、デスクトップ(画面の最背面にある部分。壁紙などを貼り付けることができる)やマイ・ドキュメント、スタートメニューなどの特別なフォルダをよく使うが、それらに対応する実際のフォルダは、動作環境によってパスが異なるため(実行するOSやユーザーごとに異なるなど)、スクリプトから利用する場合も、コードでフォルダのパスを直接指定することはできない。
このような場合に利用できるのがWshShellオブジェクトのSpecialFoldersというプロパティである。SpecialFoldersプロパティを利用すれば、これら特殊フォルダのパスを取得することができる。SpecialFoldersプロパティでフォルダを取得してから操作するようにすれば、特定の環境に依存しないスクリプトを作成可能だ。
SpecialFoldersで取得できるフォルダは次の16種類である。ただし、一時フォルダやWindowsのシステム・フォルダはSpecialFoldersではなく、環境変数を利用して取得する。
フォルダ指定 | 意味 |
---|---|
AllUsersDesktop | All Usersのデスクトップ |
AllUsersStartMenu | All Usersのスタート・メニュー |
AllUsersPrograms | All Usersのスタート・メニューの「すべてのプログラム」 |
AllUsersStartup | All Usersのスタート・メニューの「スタートアップ」 |
Desktop | デスクトップ |
Favorites | お気に入り |
Fonts | フォント |
MyDocuments | マイ・ドキュメント |
NetHood | マイ・ネットワーク |
PrintHood | プリンタ |
Programs | スタート・メニューの「すべてのプログラム」 |
Recent | 最近使ったファイル |
SendTo | コンテキスト・メニューの「送る」 |
StartMenu | スタート・メニュー |
Startup | スタート・メニューの「スタートアップ」 |
Templates | ファイルの新規作成のテンプレート |
SpecialFoldersプロパティで取得できる特殊フォルダ |
SpecialFoldersを使うときは、次のように、取得したい特殊フォルダのフォルダ指定文字をパラメータとして指定する。
objShell.SpecialFolders("フォルダ指定")
例えばマイ・ドキュメントのフォルダを知りたければ、次のようにする。
objShell.SpecialFolders("MyDocument")
実際には、SpecialFoldersはフォルダの名前(表中のフォルダ指定)をキーとするコレクションを表し、続くカッコの部分はそのデフォルト・プロパティであるItemプロパティとなっている(この関係については前出のオブジェクト・モデルの図を参照)。つまり上のスクリプトを省略せずに書くとすれば、次のようになる。
objShell.SpecialFolders.Item("MyDocument")
次のコードは、各特殊フォルダをコマンドラインに一覧表示するサンプル・スクリプトである。
1: Set objShell = WScript.CreateObject("WScript.Shell")
2: WScript.Echo "Desktop: "
3: WScript.Echo " " & objShell.SpecialFolders("Desktop")
4: WScript.Echo "Favorites: "
5: WScript.Echo " " & objShell.SpecialFolders("Favorites")
6: WScript.Echo "MyDocuments: "
7: WScript.Echo " " & objShell.SpecialFolders("MyDocuments")
8: WScript.Echo "SendTo: "
9: WScript.Echo " " & objShell.SpecialFolders("SendTo")
10: WScript.Echo "StartMenu: "
11: WScript.Echo " " & objShell.SpecialFolders("StartMenu")
12: WScript.Echo "Startup: "
13: WScript.Echo " " & objShell.SpecialFolders("Startup")
これをspecialfolders.vbsというファイルに保存して実行すると次のようになる。
D:\WSH> cscript specialfolders.vbs
Desktop:
C:\Documents and Settings\tomo-k\デスクトップ
Favorites:
C:\Documents and Settings\tomo-k\Favorites
MyDocuments:
C:\Documents and Settings\tomo-k\My Documents
SendTo:
C:\Documents and Settings\tomo-k\SendTo
StartMenu:
C:\Documents and Settings\tomo-k\スタート メニュー
Startup:
C:\Documents and Settings\tomo-k\スタート メニュー\プログラム\スタートアップ
D:\WSH>
Copyright© Digital Advantage Corp. All Rights Reserved.