(for Internet Explorer)
Function  Setting_getDiffCmdLine( i as integer ) as string
テキスト比較(Diff)を実行するコマンドラインのテンプレートを返す。
(src)
【引数】
i
返り値
コマンドラインの種類
コマンドライン文字列
Diff のパスのみ返す。 "" で囲まないこと
i=0 のとき
C:\Program Files\Rekisa\Rekisa.exe
例:
例:
"C:\Program Files\Rekisa\Rekisa.exe" "%1" "%2"
比較する2つのファイルのパスを %1, %2 にした、Diff を起動するコマンド
ラインを返す。
i=2 のとき
比較する3つのファイルのパスを %1, %2, %3 にした、Diff を起動する
コマンドラインを返す。
"C:\Program Files\Rekisa\Rekisa.exe" "%1" "%2" "%3"
例:
i=3 のとき
関連
i=21 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
 -ActiveFile="%1" "%1" "%2"
例:
比較する2つのファイルのパスを %1, %2 にして、%1 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
比較する2つのファイルのパスを %1, %2 にして、%2 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
例:
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
 -ActiveFile="%2" "%1" "%2"
i=22 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
 -ActiveFile="%1" "%1" "%2" "%3"
例:
比較する3つのファイルのパスを %1, %2, %3 にして、%1 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
i=31 のとき
比較する3つのファイルのパスを %1, %2, %3 にして、%2 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
例:
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
 -ActiveFile="%2" "%1" "%2" "%3"
i=32 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
 -ActiveFile="%2" "%1" "%2" "%3"
例:
比較する3つのファイルのパスを %1, %2, %3 にして、%3 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
i=33 のとき
"C:\Program Files\WinMerge\WinMergeU.exe" "%1" "%2"
例:
参考
Diffを実行するコマンドラインを返す
→ _src\Test\tools\T_SyncFiles\SettingForTest.vbs
Setting_getDiffCmdLine 関数の中で
を呼び出すスクリプトを
参考
include (関数定義を上書き)すると、Diff ツールで開こうとしたファイル
のパスを、ArgsLog.txt に追記するようになります。 ArgsLog.txt の内容を
チェックすれば、開くファイルのパスが正しいかどうかをチェックできます。
%APPDATA%\Scripts\account_setting.vbs
ファイルを新規作成して下記のように記述してください。
Function  Setting_getAdminUserName()
  Setting_getAdminUserName = "Administrator"
End Function
Function  Setting_getAdminUserName() as string
管理者のユーザー名を返します。
Windows XP で自分が管理者であったり、Windows 7 で管理者になれる
ユーザであれば、関数定義の記述は不要です。
参考
管理者のユーザー名は、
= 1 にしたときに使われます。
Sub  Setting_buildTestPrompt( Prompt as TestPrompt )
テスト・プロンプトの設定を行います。
(src)
参考
【引数】
Prompt
設定 (TestPrompt_Setting.vbs のサンプルを参照)
プロンプトのメニュー項目を設定します。
テスト・スクリプト(Test.vbs)を登録します。
Sub  Setting_getTemp( out_FolderPath as string, out_LimitDate as Date )
テンポラリ・ファイルやテンポラリ・フォルダーの設定値を取得します。
【引数】
out_FolderPath
out_LimitDate
(出力) テンポラリ・フォルダのパス
(出力) 保存期限
サンプル:
Sub  Setting_getTemp( out_FolderPath, out_LimitDate )
  out_FolderPath = env( "%Temp%\Report" )
  out_LimitDate = DateAdd( "d", -2, Now() )  '// "d" = day
End Sub
下記は、Setting_getTemp を定義していないときと同じ設定です
テンポラリ・フォルダの設定に関するオブジェクト。
テンポラリ・フォルダに保存するまでは Empty です。
Dim  g_TempFile as TempFileClass
Setting_getTemp は、g_TempFile = Empty のときに呼ばれ、呼び出したら、
g_TempFile.m_FolderPath に out_FolderPath に出力したパスが入ります。
out_FolderPath や out_LimitDate に値を代入しなかったら、デフォルト値が
使われます。
out_LimitDate 引数に出力した日時より前のタイムスタンプを持つファイルは、
GetTempPath で削除されます。 参考
参考
テンポラリ・ファイルのパスを返す
Function  GetExistPathInSetting( Paths as array of string, SettingFuncName as string )
Paths 配列に格納されているパスのうち、最初にファイルが存在するパスを返します。
【引数】
Paths
SettingFuncName
パスの配列
本関数を呼び出している関数の名前
返り値
ファイルが存在するパス
(src)
Paths の要素に Empty を含んでいてもエラーにはなりません。

もし、該当するファイルが存在しなければ、setting フォルダーにある vbs ファイルを修正する
ように、警告が表示されます。
GetExistPathInSetting は、setting フォルダーの中で定義する関数の中から呼び出せる関数です。
サンプル
Function  Setting_getEditorCmdLine( i )

  paths = Array( _
    g_sh.ExpandEnvironmentStrings( "%ProgramFiles%\sakura\sakura.exe" ), _
    g_sh.ExpandEnvironmentStrings( "%windir%\notepad.exe" ) )
  exe = GetExistPathInSetting( paths, "Setting_getEditorCmdLine" )
→ Setting_getEditorCmdLine のサンプル (src)
Sub  EditAndRunScript( ScriptPath as string, IsKeepThisProcessIfRun as boolean )
VBScript ファイルをテキスト・エディターで開いて、編集後に実行します。
【引数】
ScriptPath
IsKeepThisProcessIfRun
VBScript ファイルのパス。 Empty =
False=実行開始したら現在のプロセスを終了する
(src)
サンプル
Sub  EditAndRunThisScript()
    EditAndRunScript  Empty, False
End Sub
本関数を呼び出すと、
VBScript ファイル開きます。
に登録したテキスト・エディターを使って
テキスト・エディターを閉じたら、編集した VBScript ファイルを実行するかどうかを確認する
ウィンドウが開きます。 実行するを選んだら、実行を開始して、IsKeepThisProcessIfRun
= False なら、現在実行中のプロセスは終了します。 つまり、新しい VBScript ファイルの
プロセスに切り替わります。  IsKeepThisProcessIfRun = True なら、実行を開始して、
本関数から戻ります。
実行することをキャンセルすると選んだら、そのまま本関数から戻ります。
→ T_EditAndRunScript フォルダ
テスト
コマンドプロンプト、またはウィンドウにメッセージを表示します。
Enter キーを押すまで待ちます。
プロンプトを表示し、ユーザからのキーボード入力を待ちます。
キーボード入力をエミュレーションします。
他にもあります。左のツリーから選択してください。
音楽ファイルや効果音ファイルを鳴らします。
コントロールパネルに設定されている効果音を鳴らします。
テスト
に入ります。
Function  echo( Message as variant ) as string
コマンドプロンプト、またはウィンドウにメッセージを表示します。
【引数】
Message
表示する内容、またはオブジェクト
  echo "はろー"
  echo  1+1
サンプル:
Message にオブジェクトを指定した場合、Value プロパティを表示します。
参考
Class  ClassX
  Public Property Get  Value()
関連
返り値
表示した内容(文字列)
(src)
があるときは、出力しません。
サンプル: ファイルとコマンドプロンプトの両方に出力する
  Dim out : Set out = OpenForWrite( "_out.txt", Empty )
  out.WriteLine  echo( "はろー" )
→ T_Var.vbs # T_LoadEnvVars
テスト
で、コマンドプロンプトを表示しているときは、コマンド・
プロンプトの中に、そうではないときは、ウインドウに表示します。
echo は、
を使っているときは、Test_logs.txt ファイルにも出力します。
テスト・プロンプト (Test.vbs)
EchoOff オブジェクトがあるときでも出力したいときは、標準出力してください。
例:echo_r "text", ""
今まで echo した内容をウィンドウで表示します。
echo で出力しないようにします。
標準出力かファイルに、文字列を出力します。
VBScript / WSH の標準的な表示関数。
ファイル:
vbslib.vbs
Message を表示可能な文字列に変換します。
  Set obj = new ClassX
  echo  obj  '// obj.xml プロパティを表示する
サンプル:
はろー
2
実行結果:
  Dim  a
  a = 5
  echo  "a = "& a
a = 5
実行結果:
サンプル:
実行結果:
名前は、太郎です。
  Dim  name
  name = "太郎"
  echo  "名前は、"+ name +"です。"
サンプル:
サンプル:
  Dim  name
  name = input( "あなたの名前は?>" )
  echo  name +"さんですね。"
実行結果:
あなたの名前は >次郎
次郎さんですね。
echo
Sub  echo_flush()
(src)
コマンド・プロンプトを表示していないとき、今まで echo した文字列をウィンドウで表示します。
コマンド・プロンプトを表示しているときは、何もしません。
echo_flush を呼び出さなくても、プログラム終了時、pause、input 時、何度も echo したときは、
ウインドウに自動的に表示します。
参考
コマンドプロンプトを表示するかどうか
  echo  "注意してください。"
  echo_flush
サンプル:
ファイル:
vbslib.vbs
Sub  echo_line()
(src)
水平線を表示します。
------------------------------------------------------------
表示内容:
ファイル:
vbslib.vbs
Function  FuncA( Param1 )
  echo  ">FuncA " & Param1
  Dim  ec : Set ec = new EchoOff

  echo  "SubA"

  ec = Empty
  echo  FuncA
End Sub
EchoOff オブジェクトがあるときは、
で出力しません。
呼び出した関数名を表示する
EchoOff オブジェクトの削除で、表示を復活します。
ec=Empty しない場合でも、FuncA から返ると自動的に復活します。
(デストラクタによるため)
通常、下記のように使います。
関連
EchoOff オブジェクトがあるときに、長い処理の進捗状況を表示したいときは、echo_r で標準出力へ出力して
ください。
EchoOff
echo で表示しないようにする
ここの echo では表示されません。 実際は、FuncA 関数から呼び
出す関数の中から呼ばれる echo による表示を抑制します
ファイル:
vbslib.vbs
→ vbslib.vbs
ソース
→ vbslib_mini.vbs
Dim  g_EchoObj.m_bEchoOff as boolean
によって出力しないかどうか。
ソース
→ vbslib.vbs
Sub  DisableEchoOff()
EchoOff オブジェクトがあっても、echo 出力するようにします。
関連
Sub main()
  DisableEchoOff
    :
サンプル:
(src)
ファイル:
vbslib.vbs
Function  echo_v( Message as string ) as string
文字列を出力します。 フィルタリングされません。
【引数】
Message
出力する内容の文字列(文字列以外は指定できません)
ファイル:
vbs_inc_sub.vbs
サンプル
If g_verbose Then  echo_v  "処理は1つも行われませんでした。"
g_verbose を使うときは、echo_v を使用してください。
の影響を受けません。(= フィルタリングされません)
エラーメッセージは、echo ではなく echo_v を使用してください。
テスト
→ T_Verbose.vbs # [T_Verbose]
関連
(src)
Function  echo_r( Message as string, RedirectPath as string ) as string
標準出力かファイルに、文字列を出力します。
【引数】
Message
RedirectPath
出力する内容の文字列など(echo と同じ)
出力先のファイルパス、Empty のときは出力しない、""=標準出力へ
返り値
出力した内容の文字列
関連
(src)
サンプル:
echo_r  "エラー", ""
ファイル:
vbslib.vbs
(src)
Function  Execute_Echo( ExpressionStr as string, Label as string ) as string
式とその計算結果を表示します。 デバッグ用です。
【引数】
ExpressionStr
Label
式(文字列)
表示内容の最初に表示するラベル
返り値
Execute に渡すコード
ファイル:
vbslib.vbs
書きかけ
関連
サンプル
Message を表示可能な文字列に変換します。
Function  GetEchoStr( Message as variant ) as string
(src)
Message がオブジェクトの場合、
Message が Dictionary の場合、キーとアイテムの両方を文字列にします。
このとき、アイテムを再帰的に GetEchoStr に渡します。
Message が配列または ArrayClass の場合、すべての要素を文字列にします。
テスト
ファイル:
vbslib.vbs
サンプル:
s = GetEchoStr( object )
→ T_Value.vbs # T_EchoStr
の返り値を返します。
(src)
Dim  g_CustomEchoStrGenerators  as dictionary of Function
Function  InitializeModule( ThisPath )
  Set g_CustomEchoStrGenerators( "ClassA" ) = GetRef( "ClassA_xml_sub" )
End Function

Function  ClassA_xml_sub( m as Object, Level as integer )
  ClassA_xml_sub = GetTab(Level)+ "<"+TypeName(m)+" Name='"+ XmlAttrA( m.Name ) +_
                   "'/>"+ vbCRLF
End Function
表示可能な文字列に変換する関数の辞書。
サンプル
参考
の引数に指定したオブジェクトのクラスに、
関数の中で、g_CustomEchoStrGenerators に関数を登録してください。
を定義できないときは、
登録する関数は、xml_sub メソッドと同じ形式の文字列を返すようにしてください。
Sub  Pause()
続行するには Enter キーを押してください . . .
コマンドプロンプトにメッセージを表示して、Enter キーを押すまで待ちます。
メッセージの内容:
vbslib.vbs (src)
サンプル:
echo  "処理を開始します。"
If not ArgumentExist( "silent" ) Then  Pause
デバッグするときは、Pause より MsgBox を使った方がよいでしょう。
Pause は、子プロセスがからむと、メッセージが表示されない可能性があるためです。
silent
"処理を開始します。"
Pause
ファイル:
vbslib.vbs
Pause
サンプル:
vbslib_mini.vbs (src)
Sub  pause2()
コマンドプロンプトを使う .vbs ファイルをダブルクリックしたときだけ pause します。
プログラムの最後で pause2 すると、コマンドプロンプトに出力した内容を確認できます。
(src)
Function  Input( Prompt as string ) as String
プロンプトを表示し、ユーザからのキーボード入力を待ちます。
【引数】
Prompt
返り値
表示する内容
ユーザが入力した文字列、入力なし=""
→ vbslib.vbs#CUI
    Dim  key
    key = Input( "キーワードを入力してください >" )
    echo  key
テスト
サンプル
254文字以上は入力できません。
コマンドプロンプトから入力した場合、128文字以上を入力したときに日本語文字が入って
いると、128文字目付近の文字が消えてしまうため、 InputBox を使って再入力を要求します。
コマンドプロンプトから入力した場合、128文字目が日本語文字の場合は、cscript.exe が、
例外を発生してしまいます。
関連
Ctrl+C を押すと、プログラムは中断します。エラーにもなりません。
ファイル:
vbslib.vbs
Input
    key = Input( "〜します。[Y/N]" )
    If key<>"y" and key<>"Y" Then   Exit Sub  ' ... Cancel
関連
→ vbslib_mini.vbs
→ vbslib.vbs
ソース
    echo  "1) コマンドAを起動する [CommandA]"
    echo  "2) コマンドBを起動する [CommandB]"
    key = LCase( Trim( Input( "番号またはコマンド名>" ) ) )
    Select Case  key
        Case "1": key = "commanda"
        Case "2": key = "commandb"
    End Select