(for Internet Explorer)
%〜% で囲まれた環境変数の名前を環境変数の値に展開します。
Function  env( s as string ) as string
(src)
引数に Empty が指定されると Empty を返します。
指定した環境変数が定義されていないときは、エラー E_NotFoundSymbol = &h80041006 になり
ます。
SetVar で設定した環境変数も展開します。
  path = env( "%windir%" )
サンプル:
環境変数 windir を展開する
  path = env( "%windir%\system32" )
サンプル:
環境変数以外も指定できます。
関連
テスト
→ T_Var.vbs # [T_Var1]
  paths = env( Array( "%windir%", "%windir%\system32" ) )
  Assert  IsSameArray( paths, Array( "C:\Windows", "C:\Windows\system32" ) )
引数に配列を指定すると、それぞれの配列要素にある環境変数を展開します。
ローカル環境変数の値が配列のとき、配列要素に環境変数があれば、それも展開します。
SetVar  "VarA", 1
SetVar  "VarB", 2
SetVar  "VarC", Array( "X%VarA%X", "X%VarB%X" )
Assert IsSameArray( env("%VarC%"), Array( "X1X", "X2X" ) )
コマンドラインの1行を解析して、それぞれの項目を配列に格納する。
Function  ArrayFromCmdLine( CmdLine as string ) as array of string
For Each column  In ArrayFromCmdLine( "Sample.exe ""file (1).txt"" /opt1:2" )
  echo  column
Next
【引数】
CmdLine
返り値
コマンドラインの1行
(出力)それぞれの項目が入った配列
サンプル
上記 ArrayFromCmdLine の返り値は、Array( "Sample.exe", "file (1).txt", "/opt1:2" )
(src)
関連
→ T_CmdLine.vbs # [T_ArrayFromCmdLine]
テスト
それぞれの項目は、空白文字によって分割されます。
タブルクォートの中にある空白文字は、項目の分割になりません。
両端のダブルクォートは、項目に含まれません。
ダブルクォートは閉じてなくても構いません。
タブルクォートで囲まれている部分の前または後が空白文字ではないときは、それらも
1つの項目の中に含まれます。 その際、ダブルクォート文字は含まれません。
abc "def ghi" "j k
abc
def ghi
abc def
def
abc
abc"def" ab"c d"ef
abcdef
abc def
ダブルクォート文字を項目に含めるときは、\" と記述します。
" " で囲まれた中でも外でも同じです。
ab\"cd "12\"34"
12"34
ab"cd
\ が n 文字あって直後に " があるときは、n が偶数なら、\ 文字が n/2 文字と " " の
囲みの開始になります。 n が奇数なら、\ 文字 (n-1)/2 文字と " 文字になります。
" " で囲まれた中でも外でも同じです。
j k
\ の直後が " ではないときは、\ が連続していても、そのまま項目に入ります。
\\pc\n
\\pc\n
\" \\\" \\\\\" \\"a b" \\\\"c d"
"
\"
\\"
\a b
\\c d
"\" \\\" \\\\\" \\"a b" \\\\"c d"
" \" \\" \a
b \\c
d
→ コマンドラインの引数とエスケープ
参考
その他の形式から配列
パラメーターを記録する
コマンドラインの1行を解析して、オプション以外の項目を配列に格納する。
Function  ArrayFromCmdLineWithoutOpt( CmdLine as string, OptionSigns as variant )
  as array of string
arr = ArrayFromCmdLineWithoutOpt( "Sample.exe ""file (1).txt"" /opt1:2  param2", Empty )
【引数】
CmdLine
OptionSigns
コマンドラインの1行
オプション記号の配列、または Empty(= "/", "-")
サンプル
上記 ArrayFromCmdLineWithoutOpt の返り値は、Array( "Sample.exe", "file (1).txt", "param2" )
(出力)それぞれの項目が入った配列
返り値
コマンドラインの1行を解析して、オプション名をキーとした辞書を返します。
Function  DicFromCmdLineOpt( CmdLine as string, OptionNames as array of string )
            as dictionary of string or True
Dim params : Set params = DicFromCmdLineOpt( _
  "Sample.exe /opt1:2 -flag param", Array( "/opt1", "-flag", "/no_opt" ) )

Assert  IsSameArray( params( "no name" ), Array( "Sample.exe", "param" )
Assert  params( "/opt1" ) = "2"
Assert  params( "-flag" ) = True
Assert  params( "-flag" )
Assert  not params( "/no_opt" )
Assert  IsEmpty( params( "/no_opt" ) )
【引数】
CmdLine
返り値
コマンドラインの1行
(出力)オプション名をキーとした辞書
オプションではないパラメーターは、キー "no name" の、配列型の値に格納されます。
オプションは、キーがオプション名、値が文字列型、True、Empty のいずれかになります。
サンプル
OptionNames
オプション名の配列
複数指定ができるオプションは、OptionNames に指定するオプション名の後に "::"
(コロン×2)を付けてください。 このとき、辞書の値は配列になります。
オプション名と値の間に空白文字が含まれる場合は、OptionNames に指定する
オプション名の後に ":" (コロン)を付けてください。
Dim params : Set params = DicFromCmdLineOpt( _
  "-o value1 value2", Array( "-o:" ) )

Assert  params( "-o" ) = "value1"
Assert  IsSameArray( params( "no name" ), Array( "value2" )
Dim params : Set params = DicFromCmdLineOpt( _
  "-o value1 -ovalue2", Array( "-o::" ) )

Assert  IsSameArray( params( "-o::" ), Array( "value1", "value2" ) )
(src)
→ T_CmdLine.vbs # [T_DicFromCmdLineOpt]
テスト
関連
  i = 1
  Do
    s = MeltCmdLine( cmdline, i )
    If i = 0 Then Exit Do
  Loop
サンプル
コマンドラインの1項目を取り出し、通常の文字列に戻す。
Function  MeltCmdLine( Line as string, in_out_Start as integer ) as string
【引数】
CmdLine
in_out_Start
コマンドラインの内容
(入力) 取り出しを開始する文字の位置、(出力)次に取り出す〜
返り値
取り出したコマンドラインの1項目
次の項目が無いときは、in_out_Start=0 になります。
(src)
→ T_CmdLine.vbs # [T_MeltCmdLine]
テスト
関連
サンプルデータ
sample.exe param1 "param 2"
次の順番で返ります
sample.exe
param1
param 2
(src)
Function  ArrayFromBashCmdLine( CmdLine as string ) as array of string
bash シェルのコマンドラインの1行を解析して、それぞれの項目を配列に格納する。
の bash 版です。
→ T_CmdLine.vbs # [T_ArrayFromBashCmdLine]
テスト
の bash 版です。
→ T_CmdLine.vbs # [T_ArrayFromBashCmdLine]
テスト
(src)
bash シェルのコマンドラインの1項目を取り出し、通常の文字列に戻す。
Function  MeltBashCmdLine( Line as string, in_out_Start as integer ) as string
関連
コマンドラインが入った文字列を解析して、それぞれの引数を配列などに格納する。
Function  ParseCmdLine( CmdLine as string ) as CmdLineArgs
  Set args = ParseCmdLine( line )
【引数】
CmdLine
返り値
コマンドライン
引数にアクセスするオブジェクト
サンプル
サンプルデータ
sample.exe param1 "param 2"
次のように分割されます
sample.exe
param1
param 2
未対応
現在のスクリプトを起動したときのコマンドラインではない、コマンドラインの内容に
アクセスしやすくします。
取得
メンバー
に準拠
未対応
Function  CmdLineFromStr( Str as string or array ) as string
文字列、または文字列の配列から、コマンドラインを作成します。
【引数】
Str
文字列、または文字列の配列
返り値
コマンドライン
ファイル:
vbslib.vbs
サンプル
cmd = CmdLineFromStr( Array( "findstr", "/C:""quot and space""", "*" ) )
Assert  cmd = "findstr ""/C:\""quot and space\"""" *"
→ T_CmdLine.vbs # [T_CmdLineFromStr]
テスト
(src)
Function  GetCmdLine() as string
現在のスクリプトを起動したときのコマンドラインを返します。
(src)
実行ファイル名と、パラメーターの両方を含みます。
関連
Function  ArgumentExist( Name as string ) as boolean
【引数】
Name
コマンドライン・オプション名
返り値
オプションが指定されているかどうか
指定した名前のコマンドライン・オプションが指定されているかどうかを返します。
/Opt1:1 ではなく /Opt1 では、WScript.Arguments.Named.Item("Opt1") は
Empty を返し、/Opt1 を指定しなかったときと、区別ができません。
ArgumentExist は、区別ができます。
Name の大文字小文字は区別します。
(src)
WScript.Arguments.Named.Item("Opt1")
  If ArgumentExist( "Opt1" ) Then ...
サンプル:
→ GetArgvNamed (clib)
関連
WScript.Arguments.Unnamed(0)
→ GetCommandLineExist (clib)
(src)
Function  GetCommandLineOptionName( OneParameter as string ) as string
オプション名+値から、オプション名を返します。
【引数】
OneParameter
返り値
オプション名+値
オプション名
サンプル:
name = GetCommandLineOptionName( "/OptionA:12" )
'// name = "OptionA"
→ T_CmdLine.vbs # [T_CommandLineOption]
テスト
(src)
Function  GetCommandLineOptionValue( OneParameter as string ) as string
オプション名+値から、値を返します。
【引数】
OneParameter
返り値
オプション名+値
サンプル:
value = GetCommandLineOptionValue( "/OptionA:12" )
'// value = "12"
value = GetCommandLineOptionValue( "/OptionA:""C:\Program Files""" )
'// value = "C:\Program Files"
→ T_CmdLine.vbs # [T_CommandLineOption]
テスト
コマンドラインの1行にある、オプションの値を変更します。
Function  ModifyCmdLineOpt( CmdLine as string,
            OptionName as string, NewOptionNameAndParam as string ) as string
【引数】
CmdLine
NewOptionNameAndParam
コマンドラインの1行
オプション名と、変更後の値。 削除=Empty
OptionName
オプション名
(出力) 変更後のコマンドラインの1行
返り値
  new_cmdline = ModifyCmdLineOpt( "-Opt1 -Opt2:ValueA Value1", "-Opt2", "-Opt2:ValueB" )
  Assert  new_cmdline =           "-Opt1 -Opt2:ValueB Value1"
サンプル
  new_cmdline = ModifyCmdLineOpt( "-Opt1 -Opt2:ValueA Value1", "-Opt2", Empty )
  Assert  new_cmdline =           "-Opt1 Value1"
  new_cmdline = ModifyCmdLineOpt( "-Opt1 Value1", "-Opt2", "-Opt2:ValueB" )
  Assert  new_cmdline =           "-Opt1 -Opt2:ValueB Value1"
-Opt2 オプションの値を変更する
-Opt2 オプションを無くす
-Opt2 オプションがなければ追加する
-Opt2 オプションと、その値の間が空白のときは、OptionNmae 引数の末尾に ":"(コロン)を付ける
  new_cmdline = ModifyCmdLineOpt( "-Opt1 -Opt2 ValueA Value1", "-Opt2:", "-Opt2 ValueB" )
  Assert  new_cmdline =           "-Opt1 -Opt2 ValueB Value1"
複数指定できる -o オプションを追加するときは、OptionNmae 引数の末尾に "::"(コロン×2)を付ける
  new_cmdline = ModifyCmdLineOpt( "-o ValueA -o ValueB Value1", "-o::", "-o NewValue" )
  Assert  new_cmdline="-o NewValue -o ValueA -o ValueB Value1"
  new_cmdline = ModifyCmdLineOpt( "-o ValueA -o ValueB Value1", "-o::ValueB", "-o NewValue" )
  Assert  new_cmdline =           "-o ValueA -o NewValue Value1"
複数指定できる -o オプションを修正/削除するときは、OptionNmae 引数の末尾に "::"(コロン×2)
と値を付ける
  new_cmdline = ModifyCmdLineOpt( "-o ValueA -o ValueB Value1", "-o::ValueB", Empty )
  Assert  new_cmdline =           "-o ValueA Value1"
(src)
→ T_CmdLine.vbs # [T_ModifyCmdLineOpt]
テスト
Sub  include( path as string )
path に環境変数を含めることができます。 (%var% 形式)
クラス定義や関数定義が入った VBS ファイルのパスを指定します。

VBS ファイルで定義されたグローバル変数や関数は、include を呼び出した
関数の外から参照することはできません。
include "%ProgramFiles%\Movie Maker\moviemk.vbs"
サンプル:
関数定義やクラス定義が入った VBSファイルをインクルードします。
(src)
呼び出し先に関数を実行するときのカレントフォルダは、そのスクリプト
ファイルがあるフォルダになります。
→ コールや include を相対パスで指定するときの注意
path に相対パスを指定するときは注意が必要です。
二重定義エラーが出るときの対策
インクルードする vbs ファイルに、すでに定義されているクラスの
定義があると、エラーになります。クラスは、インスタンスに影響する
ため上書きできません。 (関数は上書きできます)
二重にインクルードしないようにするか、クラス定義だけ1回だけ
インクルードするファイルに分割してください。
Dim  g_TestClass : If IsEmpty( g_TestClass ) Then _
  include  "TestClass.vbs" : g_TestClass = True
サンプル: 1回だけインクルードする
フォルダのパスを指定したり、ワイルドカードを指定すると、サブフォルダも
含めて include します。 ただし、フォルダのパスだけを指定した場合は、
*_obj.vbs ファイルだけ include します。
サンプル: objs フォルダのサブフォルダも含めて、*_obj.vbs を include します
include "objs"
関連
テスト
→ T_Include.vbs # [main2]
SectionTree オブジェクトを使って、全体の処理を複数のセクションに分割すると、途中のセクション
だけ実行することができるようになります。

たとえば、1つの関数の中で、複数のテストを連続して行っているとき、1つ1つのテストをセクションに
分けると、特定のテストだけ実行させることができるようになります。
Sub  Test_start( tests )
  Set section = new SectionTree
'//SetStartSectionTree  "T_Sample2"  '// 一部のセクションだけ実行するときは有効にする

  If section.Start( "T_Sample1" ) Then
      '// ここは実行されません
  End If : section.End_

  If section.Start( "T_Sample2" ) Then
      '// ここは実行されます
  End If : section.End_
  Pass
End Sub
サンプル
T_Sample2
(src)
ネストしているとき
サンプル
Sub  Test_start( tests )
  SetStartSectionTree  "Sec1, SubSec2"

  Dim  section : Set section = new SectionTree

  If section.Start( "Sec1" ) Then
    If section.Start( "SubSec2" ) Then
      '// ここは実行されます
    End If : section.End_
  End If : section.End_
  Pass
End Sub
テスト
(各メソッドを参照)
サンプル画面
Section> Sec1
<Section tree="Sec1">
Section> Sec1 > SubSec2
<Section tree="Sec1,SubSec2">
  :
</Section>
</Section>
サンプル画面
Section> T_Sample2
<Section tree="T_Sample2">
  :
</Section>
セクションの開始と終了で、現在のセクションの位置(親のツリーノードのセクション名から現在まで)
を表示します(下記、サンプル画面)。
Function  SectionTree::Start( SectionName as string ) as boolean
セクションの開始を指定します。
ファイル:
vbslib.vbs
【引数】
SectionName
返り値
セクション名
セクションを実行するかどうか
テスト
→ T_SectionTree.vbs # [T_SectionTree_1]
→ T_SectionTree.vbs # [T_SectionTree_2]
→ T_SectionTree.vbs # [T_SectionTree_Err]
(src)
→ T_SectionTree.vbs # [T_SectionTree_0]
Sub  SectionTree::End_()
セクションの終了を指定します。
ファイル:
vbslib.vbs
テスト
(src)
<SectionTree CurrentSectionNames="Sec1"/>
Function  SectionTree::xml() as string
現在のセクションを返します。
サンプル
  Dim  section : Set section = new SectionTree

  If section.Start( "Sec1" ) Then
      echo  section
  End If : section.End_
出力例:
現在のセクションを表示します。 なお、echo に指定するときは xml を省略できます。
ファイル:
vbslib.vbs
テスト
→ T_SectionTree.vbs # [T_SectionTree_1]
→ T_SectionTree.vbs # [T_SectionTree_2]
(src)
旧仕様
Sub  EchoTestStart( TestSymbol as string )
テストシンボルをエコー出力します。
EchoTestStart  "T_Samp1"
 ((( [T_Samp1] )))
サンプル1
サンプルの出力
EchoTestStart  tests.Symbol
サンプル2
(src)
を実行するときは、EchoTestStart 関数を呼ばなくても、自動
Test_start 関数の中で複数のテストをするときに、EchoTestStart 関数を使うと、テストのログ
が見やすくなります。
的にシンボルがエコー出力されます。
廃止予定です。
代用