【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
 
 

運用 Windows管理者のためのWindows Script Host入門

第6回 WshShellオブジェクトの詳細(2)

1.特殊フォルダの取得
――SpecialFoldersプロパティ――

海津智宏
2004/09/17


Windows管理者のための
Windows Script Host入門
WSHの内部構造
WSHスクリプト・コーディングの第1歩
WScriptオブジェクトの詳細(1)
WScriptオブジェクトの詳細(2)
WshShellオブジェクトの詳細(1)
WshShellオブジェクトの詳細(2)
WshShellオブジェクトの詳細(3)
WshNetworkオブジェクトの詳細
WshControllerオブジェクトの詳細
WSHスクリプトからのファイル操作(1)
WSHスクリプトからのファイル操作(2)

 前回に引き続きWshShellオブジェクトについて解説する。WshShellオブジェクトは、プログラムの実行やプログラムへのキー・ストロークの送信、環境変数の取得と設定など、OSに対する各種の処理を行うオブジェクトである。

特殊フォルダの取得
―― SpecialFoldersプロパティ ――

 Windows環境では、デスクトップ(画面の最背面にある部分。壁紙などを貼り付けることができる)やマイ・ドキュメント、スタートメニューなどの特別なフォルダをよく使うが、それらに対応する実際のフォルダは、動作環境によってパスが異なるため(実行するOSやユーザーごとに異なるなど)、スクリプトから利用する場合も、コードでフォルダのパスを直接指定することはできない。

 このような場合に利用できるのがWshShellオブジェクトのSpecialFoldersというプロパティである。SpecialFoldersプロパティを利用すれば、これら特殊フォルダのパスを取得することができる。SpecialFoldersプロパティでフォルダを取得してから操作するようにすれば、特定の環境に依存しないスクリプトを作成可能だ。

SpecialFoldersプロパティ(WSHリファレンス)

 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>
 

 INDEX
  [運用]Windows管理者のためのWindows Script Host入門
  第6回 WshShellオブジェクトの詳細(2)
  1.特殊フォルダの取得
    2.環境変数の取得と設定
    3.ショートカットの作成
 
 運用

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?