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()に指定できるのは、以下の値です。

指定する値説明
AllUsersDesktopAll Usersのデスクトップ
AllUsersStartMenuAll Usersのスタート・メニュー
AllUsersProgramsAll Usersのスタート・メニューの「すべてのプログラム」
AllUsersStartupAll 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の起動パスを得る方法などは、以下を参考にどうぞ。