技術情報
WshShellオブジェクト
Windowsシェルに対する操作環境を提供するオブジェクトです。
このオブジェクトを使うには、CreateObjectを使って、WshShellオブジェクトを生成しておかなければなりません。

[オブジェクトの生成]
Set オブジェクト変数 = WScript.CreateObject("WScript.Shell")

プロパティ
  • CurrentDirectoryプロパティ
  • カレントディレクトリを取得します。

    書式 "WshShellオブジェクト".CurrentDirectory

    (例)
    'カレントディレクトリを表示します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    WScript.Echo oShell.CurrentDirectory

  • Environmentプロパティ
  • 環境変数の値が格納された配列オブジェクトを取得します。

    書式 "WshShellオブジェクト".Environment(環境変数の種類)
    環境変数の種類には、Windows2000以上の場合は "System" または "Process"、Windows95/98/Meの場合は "Process" を指定します。
    未指定の場合は、OSに応じて自動的に選択されます。
    値を参照するには、配列("環境変数名") という格好で参照することができます。

    (例)
    '環境変数PATHの値を表示します
    Dim oShell, oEnv
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oEnv = oShell.Environment
    WScript.Echo oEnv("PATH")

  • SpecialFoldersプロパティ
  • 特定フォルダのパスを取得します。

    書式 "WshShellオブジェクト".SpecialFolders(特殊フォルダの種類)
    特殊フォルダの種類を以下の中から指定します。
    • AllUsersDesktop
    • AllUsersStartMenu
    • AllUsersPrograms
    • AllUsersStartup
    • Desktop
    • Favorites
    • Fonts
    • MyDocuments
    • NetHood
    • PrintHood
    • Programs
    • Recent
    • SendTo
    • StartMenu
    • Startup
    • Templates

    (例)
    'デスクトップフォルダのパスを表示します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    WScript.Echo oShell.SpecialFolders("Desktop")


メソッド
  • AppActivateメソッド
  • アプリケーションをアクティブにします。

    書式 "WshShellオブジェクト".AppActivate 引数1
    ■ 引数1(必須)
    アクティブにするアプリケーションタイトルを指定します。
    アプリケーションのタイトルバーに表示されている文字列がそのアプリケーションのタイトルとなります。

    (例)
    'メモ帳を新規作成で開くとタイトルバーに
    '「無題 - メモ帳」と表示されます
    'このメモ帳をアクティブにします
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.AppActivate("無題 - メモ帳")

  • CreateShortcutメソッド
  • ショートカットを作成します。

    書式 "WshShellオブジェクト".CreateShortcut(引数1)
    ■ 引数1(必須)
    ショートカットファイルのパスを指定します。
    ショートカットを作成対象がファイルやフォルダの場合には、拡張子「.lnk」のショートカットファイル名を指定します。
    URLが作成対象の場合には、拡張子「.url」のショートカットファイル名を指定します。

    (注)ショートカット作成対象のファイルのパスではありません。

    (例)
    'URLのショートカットをデスクトップに作成します
    Dim oShell, oShortCut, StrPath
    Set oShell = WScript.CreateObject("WScript.Shell")
    StrPath = oShell.SpecialFolders("Desktop")
    'ショートカットファイルを作成します
    Set oShortCut = oShell.CreateShortcut(StrPath & "\Test.url")
    '作成したショートカットファイルにショートカット対象を設定します
    oShortCut.TargetPath = "http://www.*****.com/"
    oShortCut.Save

  • ExpandEnvironmentStringsメソッド
  • 環境変数を展開した値を返します。

    書式 "WshShellオブジェクト".ExpandEnvironmentStrings(引数1)
    ■ 引数1(必須)
    環境変数名を指定します。
    但し、前後を「%」で囲み「%環境変数名%」という形で指定しなければなりません。

    (例)
    'Windowsフォルダのパスを表示します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    WScript.Echo oShell.ExpandEnvironmentStrings("%WINDIR%")

  • LogEventメソッド
  • イベントログに記録します。

    書式 "WshShellオブジェクト".LogEvent(引数1,引数2,引数3)
    ■ 引数1(必須)
    イベントの種類を表す整数値を以下の中から指定します。
    説明
    0 SUCCESS
    1 ERROR
    2 WARNING
    4 INFORMATION
    8 AUDIT_SUCCESS
    16 AUDIT_FAILURE
    ■ 引数2(必須)
    イベントログに記録するメッセージを指定します。
    ■ 引数3
    イベントログの記録先となるコンピュータ名を指定します。
    未指定の場合は、ローカルコンピュータとなります。

    (例)
    'イベントログに記録します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.LogEvent 0, "成功しました"

  • Popupメソッド
  • ボタンやアイコンの種類を指定することができるメッセージダイアログボックスを表示します。
    戻り値として、押されたボタンを示す整数値が返されます。
    書式 "WshShellオブジェクト".Popup(引数1,引数2,引数3,引数4)
    ■ 引数1(必須)
    メッセージダイアログボックスに表示するメッセージを指定します。
    ■ 引数2
    メッセージダイアログボックスを自動的に閉じるまでの秒数を指定します。
    未指定の場合、または「0」を指定した場合は、ユーザが閉じるまで表示されたままとなります。
    ■ 引数3
    メッセージダイアログボックスのタイトルを指定します。
    未指定の場合は、「Windows Script Host」というタイトルになります。
    ■ 引数4
    指定する場合は、表示するボタンとアイコンの種類を示す整数値を以下の中から少なくとも1つ指定します。
    複数指定したい場合には、値の和を指定します。
    説明
    0 「OK」ボタンを表示します。
    1 「OK」ボタンと「キャンセル」ボタンを表示します。
    2 「中止」ボタン、「再試行」ボタン、および「無視」ボタンを表示します。
    3 「はい」ボタン、「いいえ」ボタン、および「キャンセル」ボタンを表示します。
    4 「はい」ボタンと「いいえ」ボタンを表示します。
    5 「再試行」ボタンと「キャンセル」ボタンを表示します。
    16 「Stop」アイコンを表示します。
    32 「?」アイコンを表示します。
    48 「!」アイコンを表示します。
    64 「i」アイコンを表示します。

    [戻り値]
    このメソッドは押されたボタンの値を表す整数を以下の中から返します。
    引数2で指定した秒数経過後に自動的に閉じた場合には、「-1」を返します。
    説明
    1 「OK]」ボタン。
    2 「キャンセル」ボタン。
    3 「中止」ボタン。
    4 「再試行」ボタン。
    5 「無視」ボタン。
    6 「はい」ボタン。
    7 「いいえ」ボタン。

    (例)
    '確認ダイアログを表示します
    '「はい」「いいえ」ボタンと
    '「i」アイコンを表示します
    Dim oShell, IntRet
    Set oShell = WScript.CreateObject("WScript.Shell")
    IntRet = oShell.Popup("更新しますか?", 0, "確認メッセージ", 4 + 48)
    If IntRet = 6 Then
      WScript.Echo "更新しました"
    Else
      WScript.Echo "更新しません"
    End If

  • RegDeleteメソッド
  • レジストリキーまたはレジストリ値を削除します。

    書式 "WshShellオブジェクト".RegDelete(引数1)
    ■ 引数1(必須)
    削除するレジストリキーまたは値を指定します。
    ルートキーは以下の省略形が使用できます。
    ルートキー名 短縮形
    HKEY_CURRENT_USE HKCU
    HKEY_LOCAL_MACHINE HKLM
    HKEY_classES_ROOT HKCR
    HKEY_USERS
    HKEY_CURRENT_CONFIG

    (例)
    'レジストリキーを削除します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.RegDelete "HKCU\Software\Test\"

  • RegReadメソッド
  • レジストリキー名またはレジストリ値を取得します。

    書式 "WshShellオブジェクト".RegRead(引数1)
    ■ 引数1(必須)
    取得するレジストリキーまたは値を指定します。
    ルートキーは以下の省略形が使用できます。
    ルートキー名 短縮形
    HKEY_CURRENT_USE HKCU
    HKEY_LOCAL_MACHINE HKLM
    HKEY_classES_ROOT HKCR
    HKEY_USERS
    HKEY_CURRENT_CONFIG

    [戻り値]
    戻り値は以下のいずれかとなります。
    レジストリの型 戻り値
    REG_SZ 文字列を返します。
    REG_DWORD 数値を返します。
    REG_BINARY 2進数を返します。
    REG_EXPAND_SZ 展開可能な文字列を返します。
    REG_MULTI_SZ 文字列の配列を返します。

    (例)
    'レジストリ値を取得します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.RegRead "HKCU\Software\Test\Parameter"

  • RegWriteメソッド
  • 新しいキーの作成、既存キーへの新しい値の追加や値の変更を行います。

    書式 "WshShellオブジェクト".RegWrite(引数1,引数2,引数3)
    ■ 引数1(必須)
    作成、追加、変更するキー名、値名を指定します。 ルートキーは以下の省略形が使用できます。
    ルートキー名 短縮形
    HKEY_CURRENT_USE HKCU
    HKEY_LOCAL_MACHINE HKLM
    HKEY_classES_ROOT HKCR
    HKEY_USERS
    HKEY_CURRENT_CONFIG
    ■ 引数2(必須)
    設定するキー名や値を指定します。
    ■ 引数3
    値を設定する場合、そのデータ型を以下の中から指定します。
    データ型 説明
    REG_SZ 文字列
    REG_EXPAND_SZ 文字列
    REG_DWORD 整数
    REG_BINARY 整数

    (例)
    'レジストリ値を新規に書き込みます
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.RegWrite "HKCU\Software\Test\Parameter", "1234", "REG_SZ"

  • Runメソッド
  • 新しいプロセスで別のプログラムを実行します。

    書式 "WshShellオブジェクト".Run(引数1,引数2,引数3)
    ■ 引数1(必須)
    実行するプログラムのパスやWindowsコマンドなどを指定します。
    ■ 引数2
    ウィンドウの状態を表す整数値を以下の中から指定します。
    説明
    0 ウィンドウを非表示にし、別のウィンドウをアクティブにします。
    1 ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。
    2 ウィンドウをアクティブにし、最小化ウィンドウとして表示します。
    3 ウィンドウをアクティブにし、最大化ウィンドウとして表示します。
    4 ウィンドウを最新のサイズと位置で表示します。アクティブなウィンドウは切り替わりません。
    5 ウィンドウをアクティブにし、現在のサイズと位置で表示します。
    6 指定したウィンドウを最小化し、Zオーダ上で次に上位となるウィンドウをアクティブにします。
    7 ウィンドウを最小化ウィンドウとして表示します。アクティブなウィンドウは切り替わりません。
    8 ウィンドウを現在の状態で表示します。アクティブなウィンドウは切り替わりません。
    9 ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。
    10 アプリケーションを起動したプログラムの状態に基づいて、表示状態を設定します。
    ■ 引数3
    実行したプログラムが終了するまでスクリプトの実行を中断する場合には True を指定します。
    False を指定すると、実行したプログラムが開始されるとすぐにスクリプトに制御が戻ってスクリプトの実行が継続されます。
    未指定の場合は、True となります。

    [備考]
    このメソッドは実行したプログラムの終了を待つまでスクリプトの実行を中断することができるため、実行するプログラムと同期した実行が可能となります。
    戻り値は実行したプログラムのエラーコードとなります。

    (例)
    'DIRコマンドを実行します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.Run "cmd /C Dir /W > C:\Temp\dir.txt"

  • SendKeysメソッド
  • アクティブなウィンドウにキーコードを送ります。
    キーボードから文字を入力するのと同じ効果を得ることができます。

    書式 "WshShellオブジェクト".SendKeys(引数1)
    ■ 引数1(必須)
    キーを表す文字列を指定します。
    通常の文字は、キーボードから入力する文字と同じ文字を指定します。
    複数の文字を送る場合には、文字をつなげて指定します。
    特殊な制御文字や記号を送る場合には、以下の表を参照してください。
    送信文字 表記
    +(プラス) {+}
    ^(カレット) {^}
    %(パーセント) {%}
    ~(チルダ) {~}
    BACKSPACE {BACKSPACE}、{BS}、または {BKSP}
    BREAK {BREAK}
    CAPS LOCK {CAPSLOCK}
    DEL or DELETE {DELETE} または {DEL}
    DOWN ARROW {DOWN}
    END {END}
    ENTER {ENTER} または ~
    ESC {ESC}
    HELP {HELP}
    HOME {HOME}
    INS or INSERT {INSERT} または {INS}
    LEFT ARROW {LEFT}
    NUM LOCK {NUMLOCK}
    PAGE DOWN {PGDN}
    PAGE UP {PGUP}
    PRINT SCREEN {PRTSC}
    RIGHT ARROW {RIGHT}
    SCROLL LOCK {SCROLLLOCK}
    TAB {TAB}
    UP ARROW {UP}
    F1 {F1}
    F2 {F2}
    F3 {F3}
    F4 {F4}
    F5 {F5}
    F6 {F6}
    F7 {F7}
    F8 {F8}
    F9 {F9}
    F10 {F10}
    F11 {F11}
    F12 {F12}
    F13 {F13}
    F14 {F14}
    F15 {F15}
    F16 {F16}
    SHIFT +
    CTRL ^
    ALT %

    (例)
    'メモ帳を起動して、「ファイル(F)」メニューを開きます
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.Run "%windir%\notepad", 1
    oShell.AppActivate "無題 - メモ帳"
    oShell.Sendkeys "%F"

  • Execメソッド
  • 子コマンドシェルで別のプログラムを実行します。

    書式 "WshShellオブジェクト".Exec(引数1)
    ■ 引数1(必須)
    実行するプログラムのパスやWindowsコマンドなどを指定します。

    [備考]
    コマンドラインからのみ使用することができます。
    戻り値は、WshScriptExecオブジェクトとなります。
    このオブジェクトを使うことにより、標準入出力が利用できますので、実行したプログラムの出力を受け取ることができます。

    (例)
    'DIRコマンドを実行して結果を受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("cmd /K Dir/W")
    Do Until oExec.StdOut.AtEndOfStream
      WScript.Echo oExec.StdOut.ReadLine
    Loop