- FileSystemObject の GetSpecialFolder を使う
- Shell オブジェクトの SpecialFolders コレクションから取得する
- 環境変数から取得する
FileSystemObject の GetSpecialFolder を使う
FileSystemObject の GetSpecialFolder を使って特殊フォルダを取得できます。
GetSpecialFolder は指定された特殊フォルダのオブジェクトを返します。
この方法で取得できるのは、下表にある3つのフォルダです。
| フォルダの種類 | 定数 | 値 |
|---|---|---|
| Windows フォルダ | WindowsFolder | 0 |
| System フォルダ | SystemFolder | 1 |
| Temp フォルダ | TemporaryFolder | 2 |
使用例
次のスクリプトは、それぞれの特殊フォルダのパスを表示します。
'Windows フォルダ WScript.Echo fso.GetSpecialFolder(0).Path ' → C:\Windows 'System フォルダ WScript.Echo fso.GetSpecialFolder(1).Path ' → C:\Windows\System32 'Temp フォルダ WScript.Echo fso.GetSpecialFolder(2).Path ' → C:\Users\username\AppData\Local\Temp
Shell オブジェクトの SpecialFolders コレクションから取得する
WshShell オブジェクトの SpecialFolders コレクションから取得することもできます。
SpecialFolders コレクションにはすべての特殊フォルダのパスが設定されています。
次のスクリプトは、すべての特殊フォルダのパスを表示します。
Dim shell Set shell = CreateObject("WScript.Shell") Dim path For Each path In shell.SpecialFolders WScript.Echo path Next
ただ、これではどのパスが何の特殊フォルダなのか分かりません。
なので通常は特殊フォルダを指定して取得します。
特殊フォルダの指定は、SpecialFolders コレクションの Item プロパティで行います。
(Item プロパティは省略可)
次のスクリプトは、デスクトップのパスを表示します。
Dim shell Set shell = CreateObject("WScript.Shell") WScript.Echo shell.SpecialFolders.Item("Desktop") ' → C:\Users\username\Desktop 'Item プロパティを省略することもできます WScript.Echo shell.SpecialFolders("Desktop")
SpecialFolders に指定できる内容は以下のとおりです。
| 指定する値 | 返ってくるフォルダ |
|---|---|
| AllUsersDesktop | すべてのユーザーのデスクトップ |
| AllUsersStartMenu | すべてのユーザーのスタートメニュー |
| AllUsersPrograms | すべてのユーザーのスタートメニュー → プログラム |
| AllUsersStartup | すべてのユーザーのスタートアップ |
| Desktop | デスクトップ |
| Favorites | お気に入り |
| Fonts | フォント |
| MyDocuments | ドキュメント |
| NetHood | ネットフォルダ |
| PrintHood | プリンターフォルダ |
| Programs | スタートメニュー → プログラム |
| Recent | 最近使ったファイル |
| SendTo | 送る |
| StartMenu | スタートメニュー |
| Startup | スタートアップ |
| Templates | テンプレート |
| AppData | アプリケーションデータ |
環境変数から取得する
環境変数を取得するには ExpandEnvironmentStrings メソッドを使います。
引数には環境変数名を % で囲んだ値を指定します。
shell.ExpandEnvironmentStrings(%環境変数名%)Dim shell Set shell = CreateObject("WScript.Shell") WScript.Echo shell.ExpandEnvironmentStrings("%TEMP%") ' → C:\Users\username\AppData\Local\Temp
C:\Users\username> set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\username\AppData\Roaming :