(for Internet Explorer)
If IsSynchronizedFilesX( new_FilePathForFileInScript( "SyncFilesX.vbs" ) ) Then
Function  IsSynchronizedFilesX( Path as string or FilePathClass ) as boolean
同期が必要なファイルがすべて同期済みであるかどうかを返します。
【引数】
Path
返り値
関連
テスト
サンプル
ソース
T_SyncFilesX_CommandLine
の設定ファイルへのパス、または、
すべて同期済みであるかどうか
If IsSynchronizedFilesX( "SyncFilesX.xml" ) Then
→ SyncFilesMenuLib.vbs
→ T_SyncFilesX.vbs
テスト
→ T_fc.vbs
Function  SearchStringTemplate( FolderPath as string, RegularExpressionPart as string,
   TemplateStrings as array of string, Opt as Empty ) as array of array of GrepFound
テキストファイルの中をキーワードで検索し、どのテンプレートと一致するかを一覧します。
【引数】
FolderPath
RegularExpressionPart
検索対象フォルダーやワイルドカード
テンプレートの中にあるキーワード。複数行不可
TemplateStrings
テンプレート(複数行可)、または、その配列
返り値
の配列の配列
返り値( i ) は、TemplateStrings( i ) のテンプレートにマッチした場所を示す GrepFound オブジェクト
の配列です。 返り値( UBound( TemplateStrings ) + 1 ) は、どのテンプレートにもマッチしなかった
場所を示す GrepFound オブジェクトの配列です。
→ ToolsLib.vbs
ソース
GrepFound オブジェクトのメンバー変数の内容は、次の通りです。
.Path
.LineNum
.LineText
ファイル名
Empty
Array( テンプレートの開始位置(1以上), テンプレートの次の位置 )
GetEchoStr に渡すと、次のように変わります。
テンプレートにマッチしたファイルの中の内容。 複数行の場合あり
行番号
ファイル名
.LineText
.LineNum
.Path
T_SearchStringTemplate
関連
    founds = SearchStringTemplate( "TargetFolder", "(((", _
        "/***********" +vbCRLF+ _
        "((( ${FunctionName} ))$\{)" +vbCRLF+ _
        "************/" +vbCRLF, Empty )

    Assert  founds(0)(0).LineNum = 1  '// マッチした
    Assert  founds(0)(1).LineNum = 5  '// マッチした
    Assert  founds(1)(0).LineNum = 9  '// マッチしなかった
サンプル
TargetFolder フォルダーの中にあるテキストファイルの中から "(((" を検索し、見つかった
位置に、テンプレート(下記の複数行の文字列) がマッチしているものと、マッチしていない
ものに分けます。
/***********
((( FuncA ))${)
************/

/***********
((( FuncB ))${)
************/

/***********
((( FuncC )))
************/
検索対象のテキストファイル
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
… RegularExpressionPart 引数に指定した ((( にヒットするが、
  テンプレートに指定した ${ がないのでマッチしない
キーワードが見つかった位置が、指定したテンプレートの一部であるものと、そうでないものを
一覧します。 これを応用すれば、テンプレートの内容が違っていたり、古いテンプレートのまま
になっていたりするものを見つけることができます。
テンプレートは、可変の部分を "${変数名}" のように記述してください。 可変の部分は、複数行
にまたぐことができます。 SearchStringTemplate 関数はテンプレートの中の変数名を無視しま
すが、テンプレートを ScanFromTemplate 関数などにそのまま渡すことができます。
${ 文字は "$\{" と記述してください。 $\ 文字は "$\\" と記述してください。
関数名: ${FunctionName}
引数:   ${Arguments}
返り値: ${RerutnValue}
Opt
Empty を指定してください
が使えます。
返り値が founds のとき、founds(t)(i) の t は TemplateStrings 引数の配列番号、i はテンプレート
にマッチした複数の場所に 0 から順番につけた番号です。
founds(t)(i).LineNum は、キーワードがある位置の行番号です。
返り値
TemplateStrings 引数
Function  GetLineNumOfTemplateDifference( TargetString as string,
    RegularExpressionPart as string, TemplateString as string ) as integer
指定した文字列の中で、テンプレートに一致しない場所の行番号を返します。
【引数】
TargetString
RegularExpressionPart
テンプレートが含まれる(はずの)文字列
テンプレート(複数行可)
TemplateString
テンプレートの書き方について、
line_num = GetLineNumOfTemplateDifference( _
      "----" +vbCRLF+_
      "----" +vbCRLF+_
      "Parameter1: abc" +vbCRLF+_
      "Param2:     def" +vbCRLF+_
      "Parameter3: ghi" +vbCRLF+_
      "----" +vbCRLF, _
      _
      "Parameter1", _
      _
      "Parameter1: ${1}" +vbCRLF+_
      "Parameter2: ${2}" +vbCRLF+_
      "Parameter3: ${3}" +vbCRLF )

Assert  line_num = 4  '// Param2: の場所の行番号
サンプル
テンプレートに一致しない場所の行番号。 0=すべて一致
返り値
テンプレートの中にあるキーワード。複数行不可
→ ToolsLib.vbs
ソース
→ T_fc.vbs
テスト
T_GetLineNumOfTemplateDifference
関連
ParseDollarVariableString  "abc ${VAR1}, ${VAR2} def", sub_strings, variables
Assert  IsSameArray( sub_strings, Array( "abc ", ", ", " def" ) )
Assert  IsSameArray( variables, Array( "${VAR1}", "${VAR2}" ) )
Sub  ParseDollarVariableString( the_String as string, out_SubStringArray as array of string,
    out_VariableArray as array of string )
文字列の中の ${ } を使った変数の部分とそれ以外の部分に分割します。
【引数】
the_String
out_SubStringArray
分割する前の文字列
変数以外の部分の配列
out_VariableArray
変数の部分の配列
サンプル
ソース
関連
→ ToolsLib.vbs
ParsePercentVariableString  "abc %VAR1%, %VAR2% def", sub_strings, variables
Assert  IsSameArray( sub_strings, Array( "abc ", ", ", " def" ) )
Assert  IsSameArray( variables, Array( "%VAR1%", "%VAR2%" ) )
Sub  ParsePercentVariableString( the_String as string, out_SubStringArray as array of string,
    out_VariableArray as array of string )
文字列の中の % を使った変数の部分とそれ以外の部分に分割します。
【引数】
the_String
out_SubStringArray
分割する前の文字列
変数以外の部分の配列
out_VariableArray
変数の部分の配列
サンプル
ソース
関連
→ ToolsLib.vbs
%FullPath(..\SampleLib)%
変換前
変換後の例
C:\folder\SampleLib
%DesktopPath%
C:\Documents and Settings\user1\デスクトップ
vbslib の提供するいくつかの関数の中で、% を使った文字列変換関数が使えます。
% を使った環境変数も展開されます。
%FullPath(.)%
C:\folder\current
の c.RightHasPercentFunction
(*1)
(*2)
(*1)
(*2)
×
%RegExp(.*)%
正規表現にマッチする任意の文字列
比較対象も指定する関数で使えるかどうか。
例:
例:
比較対象を指定しない関数で使えるかどうか。
サンプル
ABC
***%FullPath(.)%***
***%RegExp(.*)%***
ABC
***C:\FolderA***
***01234567879***
展開
%MultiLine%〜
×
複数行にマッチする (*3)
(*3)
関数一覧
%MultiLine% は、任意の複数行とマッチします。
また、%MultiLine% の直後にテキスト(%を使った関数可能)を置くと、その複数行が
マッチするかどうかをチェックします。
start
%MultiLine%
end
start
Line1
Line2
Line3
end
展開
展開
start
C:\FolderA>
C:\FolderA>
C:\FolderA>
end
start
%MultiLine%%FullPath(.)%>
end
関連
→ URL にプレースホルダーを含める
キーワード:
キーワードは、必ず
Function  grep( Parameters as string, OutPath as string ) as array of GrepFound
ファイルの中で、指定したキーワードを含む行を検索します。
【引数】
Parameters
OutPath
オプションと、キーワードと、検索対象フォルダーやワイルドカード(複数可)
Empty または 検索結果の出力先のファイル・パス
返り値
    founds = grep( "-r ""define"" ""..\FolderA\*""", Empty )  '// as array of GrepFound

    '// 返り値のサンプル
    '// UBound( founds ) は、見つかった行数−1
    '// founds(0).Path     = "..\FolderA\grep_target1.txt"
    '// founds(0).LineNum  = 2
    '// founds(0).LineText = "  #define string"

    For Each  found  In  founds
        echo  found.LineText
    Next
Parameters は、Linux の
サンプル
"define" を検索する。 結果は返り値で取得する。
検索対象ファイルは、..\FolderA フォルダーで、サブ・フォルダーも含める。(-r)
grep_target1.txt:2:  define string
grep_target3.txt:2:  define string
grep_target3.txt:4:  define text
sub\grep_target1.txt:2:  define string
grep  "-r -i define *.txt *.ini", "grep_out.txt"
grep_out.txt ファイルのサンプル
"define" を検索する。 結果は、"grep_out.txt" ファイルに出力する。
検索対象ファイルは、拡張子が .txt と .ini で、サブ・フォルダーも含める。(-r)
大文字小文字は区別しない。(-i)
で指定してください。
正規表現
→ 正規表現
→ T_Grep.vbs
テスト
参考
関連
文字列の途中を取り出します。
Parameters に指定した検索対象のパスが、相対パスなら、Path プロパティも
相対パスになります。 そのときの基準フォルダーは、カレント・フォルダーになります。
GrepFound::Path プロパティ
\*
互換性
"|" (バーチカルライン)は、OR の意味になります。
"|" を検索したいときは、"\|" のようにエスケープしてください。
"-" を検索したいときは、"\-" のようにエスケープしてください。
"/"(スラッシュ)は、一般文字であり、エスケープする必要はありません。
+ のメタ文字を使うことができます。
→ 互換性
サンプル
    Set c = g_VBS_Lib
    founds = grep( "-r -l ""define"" ""..\FolderA\*""", c.NotEchoStartCommand )
    For Each  found  In  founds
        echo  found.Path
    Next
ファイル・パスの一覧を得る(-l オプション)
OutPath 引数と返り値
g_VBS_Lib.NotEchoStartCommand を指定すると、見つかった場所について、echo 表示しなく
なります。
単語単位はできません。
-u オプションがなければ、内部で、コマンドプロンプトの findstr コマンドを使用します。
-u オプションがあれば、内部で、VBScript.RegExp を使用します。
ソース
→ vbslib.vbs
キーワードがある行だけ抽出します。
ただし、オプションは、-r と -i と -l と --include のみ指定できます。
  -r : サブフォルダーも検索対象にする
  -i : 大文字と小文字を区別しないで検索する
  -l : ファイルのパスのみ出力する
    -L : キーワードを含まないファイルのパスを出力する
    -c : キーワードを含む行の数を取得するだけのため、返り値の LineNum を求める処理をしない
  --include : 拡張子を指定する
のパラメーターと同じです。
grep コマンド
-u オプション(vbslib オリジナル)を指定しないと、Unicode テキストにはヒットしません。
→ grep コマンド (Linux)
関連
\ 文字は bash を経由したときと同じになります。
つまり、\\ が \ に、\" が " に置き換わった後の文字列が、正規表現に適用されます。
例:
\(
を指定すると、一般文字の(制御文字でない)
\\(
(
\\\\
を指定すると、一般文字の(制御文字でない)
\
または
OutPath 引数に 検索結果の出力先のファイル・パスを指定すると、
例:
結果をファイルに出力する
表示され、返り値は Empty になります。 返り値を GrepFound オブジェクトの配列にしたい
ときは、OutPath 引数に Empty を指定してください。
のように
同様、
を使ったり、OutPath 引数に
の配列、または Empty
-u オプションを指定したときは、内部で
が使われます。
が使えます。 ただし、-u オプションが付いていないと無視されます。
Sub  SortGrepFoundArray( Founds as array of GrepFound )
GrepFound クラスのオブジェクトの配列をソートします。
【引数】
Founds
GrepFound クラスのオブジェクトの配列
ソース
→ vbslib.vbs
関連
→ T_Grep.vbs
テスト
ソース
→ vbslib.vbs
T_GrepClass1
T_Grep1 の *_U (grep -u の内部で使っている)
ファイルの中で、指定したキーワードを含む行を検索します。
.IsRecurseSubFolders
サブ・フォルダーも再帰的に検索対象にする。
Execute の TargetPath 引数に PathDictionaryClass
を指定したときは、無視されます
.IsOutFileNameOnly
boolean
boolean
ファイル名のみ出力する
.IsInvertMatch
キーワードにマッチしないものを出力する
boolean
.IsHitCount
LineNum を求める処理をしない
boolean
.IgnoreCase
.Pattern
string
boolean
検索キーワード
(正規表現)
大文字小文字を区別しないかどうか
Function
指定したファイルの中に対して、検索を実行する
\ は、bash を経由しないときと同じになります
にあるメンバーと同じものは、同じ名前にしています。
サンプル
Set a_grep = new GrepClass
a.grep.Pattern = "</?xml>"
founds = a_grep.Execute( "folder\*.txt" )
Function  GrepClass::Execute( TargetPath as variant ) as array of GrepFound
ファイルの中で、指定したキーワードを含む行を検索します。
【引数】
TargetPath
検索対象フォルダーやワイルドカード(複数可)、または
返り値
の配列、または Empty
TargetPath 引数は、
の Execute メソッドの引数と異なります。
サンプル
founds = a_grep.Execute( "folder\*.txt" )
founds = a_grep.Execute( Array( "folder_A\*.txt", "folder_B\*.txt" ) )
paths = ArrayFromWildcard( "folder" )
paths.AddRemove  "folder\.svn"
founds = a_grep.Execute( paths )
Function  GrepKeyword( Keyword as string ) as string
検索キーワードを grep や egrep のコマンドラインに指定する形式に変換します。
【引数】
Keyword
返り値
検索キーワード
grep や egrep のコマンドラインに指定する形式
Function  EGrepKeyword( Keyword as string ) as string
返り値を grep や egrep のパラメーターに指定するときは、" " で囲んでください。
Assert  GrepKeyword( "---\" ) = "\---\\\\"
grep -r "\---" *
(src)
(src)
→ T_Grep.vbs # [T_GrepKeyword]
テスト
サンプル
(src)
Function  GrepExpression( RegularExpression as string ) as string
RegularExpression
正規表現
RegularExpression 引数に指定した \ 文字は bash を経由しないときと同じになります。
例: \\\\ = \ 文字が2つをキーワードとする
RegularExpression 引数の先頭に、- を指定したときにオプションと扱われないように、
先頭に \ が付いたものが返ります。
RegularExpression 引数
Assert  GrepExpression( "---\" ) = "\---\\"
Function  find( keyword as string, path as string ) as string
テキストファイルの中で、指定したキーワードを含む行をまとめて返します。
【引数】
keyword
検索するキーワード
キーワードを含む行、または複数行
返り値
path
テキストファイルのパス
(src)
サンプル:
  lines = find( "<ERROR", "Test_logs.txt" )
Test_logs.txt ファイルのサンプル
start main.vbs
<ERROR msg='not found symbol'/>
Fail.
返り値のサンプル
<ERROR msg='not found symbol'/>
関連
Function  find_c( keyword as string, path as string ) as integer
テキストファイルの中で、指定したキーワードを含む行数を返します。
【引数】
keyword
path
検索するキーワード
テキストファイルのパス
キーワードを含む行数
返り値
(src)
Sub  type_( Path as string )
テキストファイルの内容を表示します。
【引数】
Path
表示するファイルのパス
type は、VBScript の予約語なので、type の後に末尾にアンダースコアを付けた名前にしています。
  type_  "result.txt"
サンプル:
参考
Function  ReadFile( Path as string ) as string
テキストファイルの全体を読み込みます。
【引数】
Path
返り値
読み込むテキストファイルのパス、または
テキストファイルの内容
ファイルが存在しないときでもエラーにならず、"" を返します。
エラーにするときは次のようにします。
多くの場合、行末に改行文字があります。 ReadFile で取得した末尾に
改行文字があることに注意してください。
Text1
ReadFile( "a.txt" ) = "Text1"+vbCRLF
a.txt
(src)
で作成したファイルは、改行文字は付きません。
text = ReadFile( "a.txt" )
サンプル:
  Set file = OpenForRead( "a.txt" )
  text = ReadAll( file )
→ T_File.vbs # [T_ReadFile]
関連
テスト
文字コードを指定するときは、
を使って
ください。 ただし、Shift-JIS, Unicode, UTF-8(BOMあり) は、使わな
くても自動的に文字コードを判定して、正しく読み込みます。
  Set cs = new_TextFileCharSetStack( "EUC-JP" )
  t = ReadFile( "a.txt")
  cs = Empty
mini (src)
Function  ReadFileInTag( Path as string, StartOfText as string, EndOfText as string ) as string
テキストファイルの中にある指定の開始タグと終了タグの間にあるテキストを読み込みます。
【引数】
Path
StartOfText
読み込むテキストファイルのパス
読み込む範囲の先頭にあるタグ(テキスト)、または Empty(=先頭から)
タグの間のテキストファイルの内容。 タグ、および、先頭と末尾の改行は除く
読み込む範囲の末尾にあるタグ(テキスト)、または Empty(=末尾まで)
返り値
EndOfText
読み込みサンプル
StartOfText = "<Tag>", EndOfText = "</Tag>" とします。
ファイル
返り値
abc<Tag>123</Tag>def
123
abc<Tag>
123
456
</Tag>def
123
456
(456の後に改行なし)
サンプル
Dim  text

CreateFile  "index.html", "abc<P class=""new"">123</P>def"
text = ReadFileInTag( "index.html", "<P class=""new"">", "</P>" ) : Assert  text = "123"

CreateFile  "index.html", "abc<P>def"
text = ReadFileInTag( "index.html", "<P>", Empty ) : Assert  text = "def"
text = ReadFileInTag( "index.html", Empty, "<P>" ) : Assert  text = "abc"
→ T_File.vbs # [T_ReadFileInTag]
テスト
関連
(src)
指定のタグで囲まれたテキストを置き換えます
文字列の途中を取り出します