(for Internet Explorer)
(src)
Sub  mkdir_for( FilePath as string )
指定のファイルを作成するためのフォルダを作成します。 ファイルは作成しません。
【引数】
FilePath
ファイルのパス
  mkdir_for  "sub\file1.txt"
sub\file1.txt ファイルを格納する sub フォルダを作成します。
→ T_File.vbs # [T_MkDir]
テスト
vbslib
モジュール・シンボル:
サンプル
Sub  rmdir( Path as string )
フォルダーを削除します。
del でも、rmdir と同じようにフォルダを削除できます。
(src)
【引数】
Path
削除するフォルダーのパス
vbslib
モジュール・シンボル:
  rmdir  "sub"
サンプル
テスト
→ T_Copy.vbs # [T_Del]
関連
Function  exist( path as string ) as boolean
フォルダまたはファイルが存在するかどうかを返します。
If exist( "file1.txt" ) Then ...
ワイルドカードを指定することもできます。
関連
参考
サンプル
テスト
→ T_File.vbs # [T_Exist]
ソース
→ vbslib.vbs
Function  fc( PathA as string, PathB as string )
ファイル、またはフォルダが同一かどうかを比較します。
【引数】
PathA
PathB
比較するファイルパスA、またはフォルダパスA
比較するファイルパスB、またはフォルダパスB
返り値
同一=True
サンプル:
Assert  fc( "result.txt", "ans.txt" )
vbslib.vbs が入ったフォルダに、feq.exe が必要です。
(src)
標準出力: ファイルの内容が同じだったとき
fc "result.txt", "ans.txt"
same.
fc "result.txt", "ans.txt"
different.
標準出力: ファイルの内容が違ったとき
標準出力: フォルダの内容が同じだったとき
fc "folder1", "folder2"
same.
標準出力: フォルダの内容が違ったとき
fc "folder1", "folder2"
Not found "sub\file1.txt" in "folder1"
Not found "sub2" in "folder2"
Not same "sub\file2.txt"
different.
参考
If not fc( "result.txt", "ans.txt" ) Then  raise E_TestFail,""
→ T_fc フォルダ
テスト
ソース
→ feq フォルダー
feq.exe のソース
→ T_feq フォルダー
テスト
テキスト・ファイルを比較します。 文字コードや改行文字が異なっていても構いません。
Function  IsSameTextFile( PathA as string, CharSetA as string,
            PathB as string, CharSetB as string, Opt as integer ) as boolean
【引数】
PathA
CharSetA
比較するファイル A のパス
比較するファイル A の文字コードセット (*1)
返り値
2つのファイルの内容が同じかどうか
比較するファイル B の文字コードセット (*1)
比較するファイル B のパス
CharSetB
PathB
(*1)
文字コードについては、
ただし、BOM があるときや、Shift JIS のときは、Empty を指定できます。
サンプル
Assert  IsSameTextFile( "FileA.txt", Empty, "FileB.txt", "EUC-JP", Empty )
Opt
オプション、または Empty
(src)
→ T_fc.vbs # [T_IsSameTextFile]
関連
Opt 引数
PathA のファイルにある空行は比較しない
c は、g_VBS_Lib の返り値です。
PathB のファイルには、
を含む
→ T_fc.vbs # [T_IsSameTextFileRegExp]
c.ErrorIfNotSame
内容が異なっていたら、エラーにする
バイナリ・ファイルを比較します。
Function  IsSameBinaryFile( PathA as string, PathB as string, Opt as integer ) as boolean
【引数】
PathA
比較するファイル A のパス
返り値
2つのファイルの内容が同じかどうか
比較するファイル B のパス
PathB
Opt
Empty
サンプル
Assert  IsSameBinaryFile( "FileA.jpg", "FileB.jpg", Empty )
(src)
テスト
→ T_fc.vbs # [T_IsSameBinaryFile]
関連
→ FileT_isSameBinaryFile (clib)
PathA または PathB にファイルが存在しないときは、エラーになります。
Function  fc_r( path_a as string, path_b as string, redirect_path as string ) as boolean
ファイルやフォルダの内容が同じかどうか調べます。
【引数】
path_a
path_b
1つ目のファイルのパス、またはフォルダのパス
2つ目のファイルのパス、またはフォルダのパス
redirect_path
調べた結果の詳細の出力先のファイルパス、Empty、"nul" 可
返り値
同じかどうか
vbslib.vbs が入ったフォルダに、feq.exe が必要です。
(src)
redirect_path の値
出力先
その他
"nul"
なし
Empty
なし
""
標準出力
ファイル
出力内容については、
Function  fc_ex( PathA as string, PathB as string, Opt as fc_option ) as boolean
ファイルやフォルダの内容が同じかどうか調べます。
【引数】
PathA
1つ目のファイルのパス、またはフォルダのパス
Opt
Empty または オプション
返り値
同じかどうか
vbslib.vbs が入ったフォルダに、feq.exe が必要です。
PathB
2つ目のファイルのパス、またはフォルダのパス
Class  fc_option
  Public  FcOptionIniPath
  Public  FcResultRedirectPath
  Public  m_bStdOut
  Public  IsStartDiffIfNotSame
  Public  IsXmlComparedAsBinary
End Class
オプション指定ファイル fc.ini のパス
FcOptionIniPath、オプション指定ファイル fc.ini
[Excludes]
A = obj
A = proj\Debug
:     :
比較を行わないファイルの一覧
未対応
IsStartDiffIfNotSame
違いが発見されたら、diff を起動。 起動したら、False になります
diff ツールは、
で設定します。
結果を出力するファイルのパス
未対応
未対応
XML として同じでも、テキストが異なれば、異なると判定する
IsXmlComparedAsBinary
False なら、文字コードや空白文字などの違いがあっても、XML ドキュメントのデータが同じであれば
同じと判定します。
デフォルト(Empty)は True です。
→ T_XML.vbs # [T_CompareXml]
テスト
(src)
set_fc_option( new fc_option ).m_bStartDiff = True
If not fc( file_a, file_b ) Then  Fail
If not fc( file_a, file_c ) Then  Fail
set_fc_option  Empty
Function  set_fc_option( opt as fc_option ) as fc_option
のオプションを設定します。 デバッグ用です。
サンプル: fc で違いが発見されたら、そのファイルに対して diff を起動します。
このオプションは、fc, fc_r, fc_ex のすべてに設定され、set_fc_option Empty するまで有効です。
返り値は、opt 引数がそのまま返ります。
複数のフォルダーにある複数のファイルの差分を調べて、Diff ツールやテキスト・エディターを
開くメニューを表示することで、手動でファイルの内容を同じにする作業を支援します。
.AddRootFolder
Function  AddRootFolder( IndexNum, RootFolderPath )
.AddFile
.IsCompareTimeStamp
.IsCompareContents
.Compare
Sub  Compare()
Sub  AddFile( StepPath )
boolean
boolean
Sub  OpenSyncMenu()
→ T_SyncFiles.vbs # main
テスト
(src) SyncFilesMenuLib.vbs
.IsSameFolder
Function  IsSameFolder( FolderAIndexNum, FolderBIndexNum )
サンプル・コード
  Set menu = new SyncFilesMenu
  menu.IsCompareTimeStamp = False
  menu.Lead = "Comparing Base, Update1 and Update2"
  menu.AddRootFolder  0, "Folder0"
  menu.AddRootFolder  1, "Folder1"
  menu.AddRootFolder  2, "Folder2"
  menu.RootFolders(0).Label = "Base"
  menu.RootFolders(1).Label = "FolderA"
  menu.RootFolders(2).Label = "FolderB"
  menu.AddFile  "File1.txt"
  menu.AddFile  "File2.txt"
  menu.AddFile  "File3.txt"
  menu.Compare
  menu.OpenSyncMenu
→ Syncs
関連
データ構造
SyncFilesRoot<array>
.StepPath
.AbsPath
.Files( Key:StepPath )
SyncFilesFile<dic>
SyncFilesMenu
.RootFolders( Index:Num )
.IsSameBinary[ n ]
string
string
boolean
Comparing Base, Update1 and Update2
 1. NotSame.txt : Base≠FolderA, Base≠FolderB, FolderA≠FolderB
 2. NotSameNo0.txt : Base に存在しません, FolderA≠FolderB
 3. Only0.txt : Base のみに存在します
 4. SameAll.txt : 同じ内容
 99. 戻る
ファイルの番号を入力してください >1

NotSame.txt
 1. Diff ツールを開く
 4. Base のファイルを開く
 5. FolderA のファイルを開く
 6. FolderB のファイルを開く
 99. 戻る
操作の番号を入力してください >
サンプル画面
比較するファイルは、AddFile メソッドを使って1つ1つ指定してください。
(src)
(src)
(src)
(src)
(src)
.IsCallViaFile
boolean
CallViaFile を呼ぶメニュー 80 を追加するかどうか
.RootFolders(i).Label
ラベル。 i は、AddFile の FileNum
ファイルが同じかどうかは、ReadFile の返り値が同じかどうかで判定します。
親フォルダーの指定を、サブ・フォルダーに置き換える
Sub  SyncFilesMenu::SetParentFolderProxyName( IndexNum as integer, Name as string )
親フォルダーの指定を、サブ・フォルダーに置き換えるように設定します。
【引数】
IndexNum
Name
フォルダー番号
サブ・フォルダー名
→ T_SyncFiles.vbs # T_SyncFilesParent
テスト
Set menu = new SyncFilesMenu
menu.IsCompareTimeStamp = False
menu.AddRootFolder  0, "Folder0"
menu.AddRootFolder  1, "Folder1"
menu.SetParentFolderProxyName  1, "_parent"
menu.AddFile  "..\Sample.txt"
サンプル
_parent
上記の場合、Folder0\..\Sample.txt と、Folder1\_parent\Sample.txt を比較します。
(src)
%AbsPath(..\SampleLib)%
変換前
変換後の例
C:\folder\SampleLib
%DesktopPath%
C:\Documents and Settings\user1\デスクトップ
vbslib の提供するいくつかの関数の中で、% を使った文字列変換関数が使えます。
% を使った環境変数も展開されます。
%AbsPath(.)%
C:\folder\current
の c.RightHasPercentFunction
(*1)
(*2)
(*1)
(*2)
×
%RegExp(.*)%
正規表現にマッチする任意の文字列
比較対象も指定する関数で使えるかどうか。
例:
例:
比較対象を指定しない関数で使えるかどうか。
サンプル
ABC
***%AbsPath(.)%***
***%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%%AbsPath(.)%>
end
(src)
Function  grep( Parameters as string, OutPath as string ) as array of GrepFound
ファイルの中で、指定したキーワードを含む行を検索します。
【引数】
Parameters
OutPath
オプションと、キーワードと、検索対象フォルダー
Empty または 検索結果の出力先のファイル・パス
返り値
GrepFound オブジェクトの配列、または Empty
ファイル:
vbslib.vbs
  Dim  founds, found
  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 は、grep コマンドのパラメーターと同じです。
\ によるエスケープは bash と同じです。
ただし、オプションは、-r と -i と --include のみ指定できます。
  -r : サブフォルダーも検索対象にする
  -i : 大文字と小文字を区別しないで検索する
キーワードは、必ず
OutPath に 検索結果の出力先のファイル・パスを指定すると、返り値は Empty になります。
サンプル
"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", "grep_out.txt"
grep_out.txt ファイルのサンプル
"define" を検索する。 結果は、"grep_out.txt" ファイルに出力する。
検索対象ファイルは、拡張子が .txt で、サブ・フォルダーも含める。(-r)
大文字小文字は区別しない。(-i)
で指定してください。
正規表現
→ 正規表現
→ T_Grep.vbs # [T_Grep1]
テスト
参考
関連
文字列の途中を取り出します。
Parameters に指定した検索対象のパスが、相対パスなら、Path プロパティも
相対パスになります。 そのときの基準フォルダーは、カレント・フォルダーになります。
GrepFound::Path プロパティ
\*
互換性
"|" (バーチカルライン)は、OR の意味になります。
"|" を検索したいときは、"\|" のようにエスケープしてください。
"-" を検索したいときは、"\-" のようにエスケープしてください。
"/"(スラッシュ)は、一般文字であり、エスケープする必要はありません。
→ 互換性
未確認
キーワードがある(ない)行だけ抽出します。
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]
テスト
サンプル
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)
で作成したファイルは、改行文字は付きません。
t = ReadFile( "a.txt" )
サンプル:
  Dim f
  Set f = OpenForRead( "a.txt" )
  t = ReadAll( f )
→ 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)