技術情報
WshArgumentsオブジェクト
スクリプトの引数を扱うためのオブジェクトです。
WScript.Argumentsプロパティが返す配列オブジェクトです。

[オブジェクトの取得]
  • オブジェクト変数に代入して取得
  • Set オブジェクト変数 = WScript.Arguments
  • オブジェクト変数に代入せずに取得
  • 変数に代入せずに扱う場合には、WScript.Argumentsをそのままオブジェクトとして扱います。

プロパティ
  • Itemプロパティ
  • WshArgumentsオブジェクト配列の1つの要素を取得します。

    書式 "WshArgumentsオブジェクト".Item(インデックス)
    インデックスで指定した要素を取得します。

    (例)
    'スクリプトへの引数を1つずつ表示します
    Dim StrParam
    Set StrParam = WScript.Arguments
    For i = 0 to StrParam.Count - 1
      WScript.Echo StrParam.Item(i)
    Next

  • Lengthプロパティ
  • WshArgumentsオブジェクト配列の要素数を取得します。

    書式 "WshArgumentsオブジェクト".Length

    (例)
    'スクリプトへの引数の個数を表示します
    WScript.Echo WScript.Arguments.Length

  • Namedプロパティ
  • スクリプトへの引数のうち、名前付きの引数の配列オブジェクトを取得します。
    名前付き引数とは、「/名前:値」という形式で指定された引数のことを指します。

    書式 "WshArgumentsオブジェクト".Named
    名前付き引数のそれぞれの値を参照するには、配列.Item("引数名") または 配列("引数名") という格好で参照することができます。

    (例)
    'スクリプトへ「/Data:1234」という名前付き引数を渡したとします
    '渡された名前付き引数の値「1234」を表示します
    WScript.Echo WScript.Arguments.Named.Item("Data")

    '以下は上記と等価です
    WScript.Echo WScript.Arguments.Named("Data")

  • Unnamedプロパティ
  • スクリプトへの引数のうち、名前なし引数の配列オブジェクトを取得します。
    名前なし引数とは、名前が付いていない通常の引数を指します。

    書式 "WshArgumentsオブジェクト".Unnamed
    名前なし引数のそれぞれの値を参照するには、配列.Item(インデックス) または 配列(インデックス) という格好で参照することができます。
    (例)
    'スクリプトへ「/1234」という名前付き引数を渡したとします
    '渡された名前付き引数の値「1234」を表示します
    WScript.Echo WScript.Arguments.Unnamed.Item(0)

    '以下は上記と等価です
    WScript.Echo WScript.Arguments.Unnamed(0)


メソッド
  • Countメソッド
  • WshArgumentsオブジェクト配列の要素数を取得します。

    書式 "WshArgumentsオブジェクト".Count

    (例)
    'スクリプトへの引数の個数を表示します
    WScript.Echo WScript.Arguments.Count

  • ShowUsageメソッド
  • ヘルプ画面を表示しますが、ヘルプの情報は拡張子が「.WSF」のファイルに定義しておかなければなりません。

    書式 WScript.Arguments.ShowUsage

    (例)
    'Test.wsfファイルに以下の情報を記述します
    'このファイルをそのままダブルクリックして実行すると、
    '定義したヘルプが表示されます
    <JOB>
    <RUNTIME>
    <DESCRIPTION>テストです</DESCRIPTION>
    <NAMED
    NAME = "Param"
    HELPSTRING = "数値を指定します"
    TYPE = "string"
    REQUIRED = "true"
    />
    <EXAMPLE>例:~</EXAMPLE>
    </RUNTIME>

    <SCRIPT LANGUAGE="VBScript">
    If WScript.Arguments.length<1 Then
    WScript.Arguments.ShowUsage
    WScript.Quit
    End If
    </SCRIPT>
    </JOB>