連載
» 2004年09月17日 00時00分 公開

Windows管理者のためのWindows Script Host入門:第6回 WshShellオブジェクトの詳細(2) (1/3)

スクリプトで環境変数をうまく使えば、システムやユーザーに応じて柔軟に処理を切り替え可能なスクリプトを作成できる。

[海津 智宏,著]
運用 Windows管理者のためのWindows Script Host入門
Windows Server Insider

 

「運用 Windows管理者のためのWindows Script Host入門」のインデックス

連載目次


 前回に引き続き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の利用例

 これを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>


       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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