WSH/JScriptでマイドキュメントなど特殊パスを得たい場面は多くあります。そこで、ここでは特殊パスを取得する方法をまとめておきます。
以下はマイドキュメントを調べる方法です。ShellオブジェクトのSpecialFolders()メソッドを使います。ちなみに、パスの末尾にパス記号(\)は付かない文字列が帰ってきますので注意。
var shell = WScript.CreateObject("WScript.Shell");
var mydoc = shell.SpecialFolders("MyDocuments");
WScript.Echo(mydoc);
デスクトップを得るには以下のようにします。
var shell = WScript.CreateObject("WScript.Shell");
var desktop = shell.SpecialFolders("Desktop");
WScript.Echo(desktop);
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 | ファイルの新規作成のテンプレート |
その他、テンポラリフォルダなどの取得:
var fso = CreateObject("Scripting.FileSystemObject");
var windir = fso.GetSpecialFolder(0); // Windowsフォルダ
var sysdir = fso.GetSpecialFolder(1); // Windows システムフォルダ
var tmpdir = fso.GetSpecialFolder(2); // テンポラリフォルダ
他にも、WSHの起動パスを得る方法などは、以下を参考にどうぞ。