![]() |
|
基礎解説 チェック式 WSH入門 第12回 WshShellオブジェクトを利用する(1) 1.Runメソッド Microsoft MVPWindows Server - Admin Frameworks 牟田口 大介 2007/09/12 |
|
|
Page1
Page2
|
|
|
今回から数回にわたって、WSH(Windows Script Host)の内部オブジェクトであるWshShellオブジェクトとそこから派生するオブジェクトについて解説していく。 WshShellオブジェクトまずはWshShellオブジェクト(ProgIDは“WScript.Shell”)と、それから派生するオブジェクト群(WshEnvironmentオブジェクト、WshSpecialFoldersオブジェクト、WshShortcutオブジェクト、WshUrlShortcutオブジェクト、WshScriptExecオブジェクト)の階層構造とそれらのメンバ(プロパティ/メソッド)を図で概観してみよう。 |
![]() |
| WshShellオブジェクトのメンバと、それから派生するオブジェクトのメンバ |
| WshShellオブジェクト(ProgIDは“WScript.Shell”)をWScript.CreateObjectメソッドを使って生成すると、これだけのメンバ(プロパティ/メソッド)にアクセス可能である。4カ所の大きな矢印( |
このように、WshShellオブジェクトは、多数のオブジェクト、メンバを内包していることが分かる。今回からはWshShellオブジェクトのメンバを中心に解説し、次回以降に派生するオブジェクトとそのメンバの使い方について述べたいと思う。
アプリケーションを起動するRunメソッド
まずは、基本となる、WSHからのアプリケーション起動方法について述べる。WSHからアプリケーションを起動するにはRunメソッドとExecメソッドが使用できる。実行時にアプリケーションのウィンドウ・スタイルなどを指定可能なのがRunメソッド、実行中にオブジェクトを通じてアプリケーションと通信を行えるのがExecメソッドである。Runメソッドの方がより簡略にアプリケーションを実行可能だ。今回はこのRunメソッドについて見ていこう。
ここでは、Windows OSに付属する標準のテキスト・エディタである「メモ帳(実行ファイル名はnotepad.exe)」を起動する例を見てみよう。notepad.exeの存在するパスは環境によって異なるので適宜書き換えてもらいたい。
※ファイルRunNotepad.vbs |
実行結果は例えば次のようになる。
![]() |
![]() |
| Runメソッドでメモ帳を起動する | |
| このようにメモ帳のウィンドウが開き、続いて、起動した旨を伝えるメッセージ・ボックスが表示される。 | |
このスクリプトでは、最初にWshShellオブジェクトをWScriptオブジェクトのCreateObjectメソッドで作成し、オブジェクト変数objWshShellに代入している。これでWshShellオブジェクトを利用可能になる。CreateObjectメソッドについての詳細は前回の「3.COMオブジェクトの操作(1)」を参照してもらいたい。
このようにRunメソッドは引数に実行ファイル(拡張子exeのファイル)のパスを記述すると、そのアプリケーションを実行する。
Runメソッドの引数は環境変数(% 〜 %で環境変数名をくくる)を展開するので、
objWshShell.Run "%windir%\system32\notepad.exe" |
と書くこともできる。
なお、パスの通っているフォルダ(環境変数PATHにフォルダのフルパスが定義されているフォルダ)の実行ファイルを実行する場合、フォルダのフルパスは省略可能である。Windows XPやWindows Server 2003、Windows Vistaの32bitバージョン(x86)ではそれぞれC:\Windows\System32にパスが通っているので、
objWshShell.Run "notepad.exe" |
と記述しても起動できる。また、スクリプトのあるフォルダにある実行ファイルも同じくフォルダ・パスは省略できる。カレント・ディレクトリにある実行ファイルも同様である(WSHからカレント・ディレクトリを設定する方法については後の回で述べる)。
実行ファイルのパスに半角スペースが含まれている場合は注意が必要だ。Runメソッドはそのような場合、実行ファイルのパスを ""(ダブル・クォーテーション記号)で囲む必要がある。すなわち、Internet Explorer(C:\Program Files\Internet Explorer\iexplore.exe)を起動するには、
objWshShell.Run """C:\Program Files\Internet Explorer\iexplore.exe""" |
と書く必要がある。ちなみに、「"(ダブル・クォーテーション)」が3つ連続しているのは、"〜"の中では、" を記述するためには "" と重ねて記述しなければならないからである。
Runメソッドでは、実行ファイルに渡すオプションも指定可能だ。Internet Explorerをキオスク・モード(全画面表示)で起動するには「-k」オプションを付けるが、その場合は次のようになる。
objWshShell.Run """C:\Program Files\Internet Explorer\iexplore.exe"" -k" |
なお、キオスク・モードで開いたInternet Explorerのウィンドウは[Alt]+[F4]キーで閉じることができる。
Runメソッドはエクスプローラの関連付けに従ってファイルを開くこともできる。例えば、スクリプトが存在するフォルダにある「test.txt」というファイルを開くには、
objWshShell.Run "test.txt" |
のようにする。すると.txtファイルに関連付けされたエディタ(デフォルトではメモ帳)が起動し、test.txtを読み込んで表示する。
Runメソッドには前述のとおり、実行するアプリケーションのウィンドウ・スタイルを省略可能な第2引数に指定できる。例えば、
objWshShell.Run "notepad.exe",3 |
のように記述すると、メモ帳が最大化されて実行される。第2引数に指定できる数値は次の表のとおりである。なお、ウィンドウをアクティブにするかどうかも決定できる。
| 第2引数に与える数値 | ウィンドウ・スタイル | アクティブ・ウィンドウ |
| 0 | 非表示 | そのまま(変わらない) |
| 1(省略時の値) | 通常サイズ | 起動したアプリケーション |
| 2 | 最小化 | 起動したアプリケーション |
| 3 | 最大化 | 起動したアプリケーション |
| 4 | 通常サイズ | そのまま(変わらない) |
| 5 | そのまま | 起動したアプリケーション |
| 7 | 最小化 | そのまま(変わらない) |
| Runメソッドの第2引数 | ||
| Runメソッドの第2引数の数値を変更すると、実行するアプリケーションのウィンドウ・スタイルを指定できる。ほかにも第2引数に与える数値は10まで定義されているのだが、筆者の環境では有意な差が認められなかったのでここでは省略している。 | ||
Runメソッドには、アプリケーションの終了を待つか否かを決めるために、Boolean値を取る省略可能な第3引数も存在する。省略時はFalseで、アプリケーションの終了を待たずにRunメソッドの次の行が実行される(非同期処理)。Trueを指定すると、アプリケーションが終了するまでスクリプトが待機する(同期処理)。例えば次のように記述する。
objWshShell.Run "notepad.exe",,True |
この場合、メモ帳のウィンドウが立ち上がり、ユーザーがウィンドウを閉じると、(「メモ帳を起動しました。」という)メッセージ・ボックスが表示される。
なお、Runメソッドは終了コードを戻り値として返す(正常終了時は0)。
| INDEX | ||
| [基礎解説]チェック式 WSH入門 | ||
| 第12回 WshShellオブジェクトを利用する(1) | ||
| 1.Runメソッド | ||
| 2.AppActivateとSendKeysメソッド | ||
| 基礎解説 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/19)
− [シャットダウン]ボタンの設定を変更する
− WINSサーバをインストールする
− WINSサーバをnetshコマンドで管理する - Windows 7のファイアウォール機能 (2010/3/18)
Win 7のファイアウォールの概要解説。ルールセットを切り替えるプロファイル機能が強化され、ドメインでもVPNでも、適切なルールが自動選択される - 第212話 プリンタ用紙 (2010/3/16)
致命的なディスク・クラッシュが起きる確率は、クラッシュによってもたらされる被害の大きさに比例する… - WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 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台以上! グループ内 サーバの「統合管理」によるメリットは? |










