分かりやすく、使いやすく。

引数を受け取る方法

スポンサーリンク

VBScript で起動時に指定された引数を取得するには Wscript.Arguments プロパティに格納された WshArguments コレクションを使用します。

以下の書式で引数の値を取得することができます。

VBScript(書式)
1
2
3
4
5
'1 個目の引数はインデックス 0 に格納される。
変数 = Wscript.Arguments(0)
 
'2 個目の引数
変数 = Wscript.Arguments(1) 
  1. 必須の引数の個数が固定されている場合
  2. 一部の引数のみ必須の場合


必須の引数の個数が固定されている場合

コマンドラインから渡すべき引数の数が決まっている場合は、 Wscript.Arguments.Count を使用して正しい数の引数が渡されているかを確認できます。

引数の数を確認し、正しい場合のみ処理を実行するサンプルコードは次の通りです。

VBScript(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Dim intArgsCount
 
intArgsCount = Wscript.Arguments.Count
 
'引数の数を取得し数が合わなければ処理を中止する。
If intArgsCount <> 2 Then
  WScript.Echo "引数が" & intArgsCount & "個渡されました。" & vbCrLf _
             & "指定可能な引数の数は 2 個なので処理を中止します。"
  
  '処理を中断
  WScript.Quit
End If
 
WScript.Echo "処理開始"
WScript.Echo "1 個目の引数の値:" & Wscript.Arguments(0)
WScript.Echo "2 個目の引数の値:" & Wscript.Arguments(1) 

誤った引数の数で実行した結果と、正しい引数の数で実行した結果は次の通りです。

D:\temp>cscript test.vbs first
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
引数が1個渡されました。
指定可能な引数の数は 2 個なので処理を中止します。 
D:\temp>cscript test.vbs first second
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
処理開始
1 個目の引数の値:first
2 個目の引数の値:second 

一部の引数のみ必須の場合

例えば最初の 2 個の引数が必須で、残りの 2 個の引数は任意(最大 4 個の引数を指定可能)なスクリプトのサンプルコードは次の通りです。

VBScript(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Option Explicit
 
Dim intArgsCount
Dim strArg1
Dim strArg2
Dim strArg3
Dim strArg4
 
intArgsCount = Wscript.Arguments.Count
 
'必須の引数が指定されているかを確認し、足りなければ処理を中断。
If intArgsCount <= 1 Then
  WScript.Echo "引数が" & intArgsCount & "個渡されました。" & vbCrLf _
             & "最低 2 個の引数が必要なので処理を中止します。"
  
  '処理を中断
  WScript.Quit
End If
 
'引数の数が多すぎないかを確認し、多すぎれば処理を中断。
If intArgsCount >= 5 Then
  WScript.Echo "引数が" & intArgsCount & "個渡されました。" & vbCrLf _
             & "引数は最大 4 個までなので処理を中止します。"
  
  '処理を中断
  WScript.Quit
End If
 
strArg1 =  Wscript.Arguments(0)
strArg2 =  Wscript.Arguments(1)
 
'任意の引数はセットされている場合のみ取得する
If intArgsCount >= 3 Then
  strArg3 =  Wscript.Arguments(2)
End If
 
If intArgsCount >= 4 Then
  strArg4 =  Wscript.Arguments(3)
End If
 
WScript.Echo "処理開始"
 
WScript.Echo "1 個目の引数:" & strArg1
WScript.Echo "2 個目の引数:" & strArg2
WScript.Echo "3 個目の引数:" & strArg3
WScript.Echo "4 個目の引数:" & strArg4 

上記スクリプトに引数を 1 個~ 5 個渡してみた処理結果は次の通りです。

D:\temp>cscript test.vbs 1個目
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
引数が1個渡されました。
最低 2 個の引数が必要なので処理を中止します。 
D:\temp>cscript test.vbs 1個目 2個目
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
処理開始
1 個目の引数:1個目
2 個目の引数:2個目
3 個目の引数:
4 個目の引数: 
D:\temp>cscript test.vbs 1個目 2個目 3個目
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
処理開始
1 個目の引数:1個目
2 個目の引数:2個目
3 個目の引数:3個目
4 個目の引数: 
D:\temp>cscript test.vbs 1個目 2個目 3個目 4個目
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
処理開始
1 個目の引数:1個目
2 個目の引数:2個目
3 個目の引数:3個目
4 個目の引数:4個目 
D:\temp>cscript test.vbs 1個目 2個目 3個目 4個目 5個目
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
引数が5個渡されました。
引数は最大 4 個までなので処理を中止します。 
スポンサーリンク