(for Internet Explorer)
← ▼ ▲
↑
AddLastOfFileName
Function AddLastOfFileName( BasePath as string, AddName as string ) as string
(src)
ファイルパスの最後（拡張子より前）に、文字列を追加します。 または拡張子を変更します。
【引数】
BasePath
AddName
追加前のファイルパス
追加する文字列
返り値
追加後のファイルパス
AddLastOfFileName( "file.txt", "123" ) = "file123.txt"
サンプル：
AddName に拡張子があったら、返り値の拡張子は、AddName の拡張子に変わります。
AddLastOfFileName( "file.txt", "123.html" ) = "file123.html"
AddLastOfFileName( "file.txt", ".html" ) = "file.html"
→ T_Path.vbs # [T_AddLastOfFileName]
テスト
関連
→ CutLastOfFileName
キーワード：
拡張子の変更
→ StrT_addLastOfFileName (clib)
AddLastOfFileName( "file.txt", "." ) = "file"
拡張子を無くす
AddLastOfFileName( path1, "."+g_fs.GetExtensionName( path2 ) )
拡張子を合わせる
→ GetPathWithSeparator
Path の最後を区切り記号にします
← ▼ ▲
CutLastOfFileName
(src)
Sub CutLastOfFileName( in_out_Path as string, LastStr as string, Opt as integer )
ファイル名（拡張子を除く）の最後に、指定した文字列があれば削除します。
Dim s
s = "File_Add.txt"
CutLastOfFileName s, "_Add", Emtpy
'// s = "File.txt"
File_Add.txt
_Add
File.txt
呼び出し前の in_out_Path
LastStr
呼び出し後の in_out_Path
"File_Add.txt"
"_Add"
【引数】
in_out_Path
out_Obj
（入出力）パスやファイル名を含む文字列
（出力） 削除する内容の文字列
Opt
"File.txt"
"File_Add.txt"
"_Insert"
"File_Add.txt"
補足
拡張子も含めて削除するときは、
を使ってください。
CutLastOf
→ CutLastOf
関連
テスト
→ T_Str.vbs # [T_StrComp]
c.CaseSensitive
Empty または
→ StrCompLastOfFileName
→ CutFragmentInURL
サンプル
← ▼ ▲
StrCompLastOfFileName
Function StrCompLastOfFileName( Path as string, LastStr as string, Opt as integer ) as integer
(src)
ファイル名（拡張子を除く）の末尾を比較します。
【引数】
Path
LastStr
比較されるファイル名またはパス
Path の末尾と比較する文字列
c.CaseSensitive
Opt
Empty または
Str 引数の値
LastStr 引数の値
返り値
返り値
Path の末尾 = LastStr なら、0
→ StrComp
"ABCDE.txt"
"CDE"
0 (=一致)
0以外(=異なる)
"ABC"
"ABCDE.txt"
0以外(=異なる)
"CDE.txt"
"ABCDE.txt"
関連
テスト
→ T_Str.vbs # [T_StrComp]
→ CutLastOfFileName
→ StrCompLastOf
← ▼ ▲
CutFragmentInURL
関連
→ CutLastOf
→ CutLastOfFileName
Function CutFragmentInURL( in_URL as string )
ファイル パスや URL に（# から始まる）フラグメントがあれば削除します。
Assert CutFragmentInURL( "C:\File.txt#2" ) = "C:\File.txt"
【引数】
in_URL
返り値
（入出力）パスやファイル名を含む文字列
（出力） 削除する内容の文字列
サンプル
ソース
→ vbslib.vbs
← ▼ ▲
GetTagJumpParams
Function GetTagJumpParams( PathAndFragment as string ) as TagJumpParams
タグジャンプ形式の文字列（パス＋行番号）を分解します。
サンプル：
Set jumps = GetTagJumpParams( "C:\folder\file1.txt(100)" )
'// jumps.Path = "C:\folder\file1.txt"
'// jumps.LineNum = 100
'// IsEmpty( jumps.Keyword )
関連
テスト
→ T_Path.vbs
→ GetEditorCmdLine
→ T_EditorDiff_Manually.vbs
TagJumpParams クラス
Class TagJumpParams
Public Path '// パス or ""、フル・パスとは限りません
Public LineNum '// as integer or Empty
Public Keyword '// as string or Empty
End Class
Set jumps = GetTagJumpParams( "file1.txt#Key" )
'// jumps.Path = "file1.txt"
'// jumps.Keyword = "Key"
'// IsEmpty( jumps.LineNum )
→ GetEditorCmdLine
参考
タグジャンプ形式の文字列の詳細
GetTagJumpParams( "C:\folder\file1.txt(100)" ).Path
Set jumps = GetTagJumpParams( "file1.txt" )
'// jumps.Path = "file1.txt"
'// IsEmpty( jumps.LineNum )
'// IsEmpty( jumps.Keyword )
→ vbslib.vbs
ソース
Set jumps = GetTagJumpParams( "file${>#}1.txt" )
'// jumps.Path = "file#1.txt"
'// IsEmpty( jumps.LineNum )
'// IsEmpty( jumps.Keyword )
T_GetTagJumpParams
T_EditorManually
${>#} 以外の ${ } は
そのまま
Set jumps = GetTagJumpParams( "file1.txt#${\n}" )
'// jumps.Path = "file1.txt"
'// IsEmpty( jumps.LineNum )
'// jumps.Keyword = "${\n}"
${>#} は、# 文字になり、
# で Keyword の区切り
にはならない
→ GetHRefBase
← ▼ ▲
GetTagJumpPath
Function GetTagJumpPath( PathAndLine as string ) as string
タグジャンプ形式の文字列（パス＋行番号）から、パスを取り出す。
サンプル：
path = GetTagJumpPath( "C:\folder\file1.txt(100)" )
path には、"C:\folder\file1.txt" が入ります。
(src)
関連
テスト
→ T_Path.vbs # GetTagJumpPath
廃止予定です。 GetTagJumpParams を使ってください。
→ GetTagJumpParams
← ▼ ▲
GetTagJumpLine
Function GetTagJumpLine( PathAndLine as string ) as integer
タグジャンプ形式の文字列（パス＋行番号）から、行番号を取り出す。
サンプル：
line = GetTagJumpPath( "C:\folder\file1.txt(100)" )
line には、100 が入ります。
(src)
関連
テスト
→ T_Path.vbs # GetTagJumpLine
PathAndLine に行番号が無いときは、0 が返ります。
廃止予定です。 GetTagJumpParams を使ってください。
→ GetTagJumpParams
← ▼ ▲
IsMovablePathToPath
Function IsMovablePathToPath( SrcPath as string, DstPath as string, IsDstFolder as boolean )
as boolean
(src)
ファイルやフォルダーのパス SrcPath と DstPath の間で、移動ができるかどうかを返します。
【引数】
SrcPath
DstPath
移動元のファイルやフォルダーのパス
移動先のファイルやフォルダーのパス
IsDstFolder
DstPath がフォルダーかどうか
移動ができるかどうか
返り値
テスト
→ T_Path.vbs # [T_IsMovablePathToPath]
ドライブが異なっていたり、ネットワーク ドライブとローカル ドライブの違いがあると、移動できません。
← ▼ ▲
FilePathClass
ファイルのパスか、ファイルの内容に相当する文字列の抽象。
一部の vbslib の関数の引数にファイル名の代わりに指定することができるファイル・パス・オブジェクトです。
文字列や、スクリプトの中のコメントなどを、ファイルとして扱います。
LoadXML
次の関数のファイル名の代わりに指定することができます。
サンプル
Set root = LoadXML( new_FilePathForString( "<Root></Root>" ), Empty )
次の関数で FilePathClass のオブジェクトを生成することができます。
new_FilePathForString
テスト
→ T_XML.vbs
T_LoadXML_PathObject
ソース
→ vbslib.vbs
new_FilePathForFileInScript
GetFilePathString
文字列をファイルとして扱います
スクリプトの中のコメントをファイルとして扱います
入力ファイル・パスに相当する文字列を返します
次のプロパティがあります。
FilePathClass のオブジェクトを ReadFile 関数に渡し、その返り値を使ってファイルの内容を処理するコード
は共通にできるでしょう。
.Text
.FilePath
テキスト・ファイルの内容
ファイル・パス
→ GetFilePathString
関連
→ ReadFile
AssertExist
ReadFile
IsSynchronizedFilesX
Set root = LoadXML( "sample.xml" ), Empty )
Set root = LoadXML( new_FilePathForFileInScript( Empty ), Empty )
ReadFile
ファイルの内容、または、それに相当する文字列を返します
← ▼ ▲
new_FilePathForString
Set root = LoadXML( new_FilePathForString( "<Root></Root>" ), Empty )
Function new_FilePathForString( Text as string ) as FilePathClass
文字列をファイルとして扱うように、ファイル名の代わりに指定するオブジェクトを返します。
【引数】
Text
ファイルの内容
ファイル名の代わりに指定するオブジェクト
返り値
テスト
サンプル
ソース
→ T_XML.vbs
T_LoadXML_PathObject
→ vbslib.vbs
→ FilePathClass
← ▼ ▲
new_FilePathForFileInScript
Function new_FilePathForFileInScript( Parameter as Empty ) as FilePathClass
スクリプトの中のコメントをファイルとして扱うように、ファイル名の代わりに指定するオブジェクトを返します。
【引数】
Parameter
VBScript ファイルのパス、# 可能、Empty =
ファイル名の代わりに指定するオブジェクト
返り値
'------------------------------------------------------------[FileInScript.xml]
'<Root>
'<Tag out_path="_Out.txt"/>
'</Root>
'-----------------------------------------------------------[/FileInScript.xml]
Sub Main( Opt, AppKey )
CommandA_App AppKey, new_FilePathForFileInScript( Empty )
End Sub
'--- start of vbslib include ------------------------------
： （vbslib をインクルードして main を呼び出すコード）
サンプル
→ FilePathClass
vbslib include
→ ReadVBS_Comment
関連
メイン・スクリプト・ファイル（WScript.ScriptFullName） に書かれた [FileInScript.*] がある行の次の行から、
[/FileInScript.*] がある行の前の行までを、ファイルの内容として扱います。 * は任意の文字列です。
スクリプト・ファイルの中にある XML データを CommandA に渡します。
テスト
→ T_FileInScript.vbs
T_new_FilePathForFileInScript
Sub CommandA_App( AppKey, Path )
Set root = LoadXML( Path, Empty )
out_path = root.selectSingleNode( "./Tag" ).getAttribute( "out_path" )
Set w_=AppKey.NewWritable( out_path ).Enable()
End Sub
上記スクリプトから呼び出す CommandA_App 関数の例：
ソース
→ vbslib.vbs
ファイルの内容（XML データ）の部分の行頭には、' が必要です。
参考
→ スクリプト・データ・ファイル (vbslib)
WScript.ScriptFullName
Path に、URL のように # を付けると、スクリプト・ファイルの中の行末にあるタグを検索して、
その中のデータをファイルとして扱います。
path_object = new_FilePathForFileInScript( "#FileInScript.xml" )
→ LoadXML
← ▼ ▲
GetFilePathString
Function GetFilePathString( Path as string or FilePathClass ) as string
入力ファイル・パスに相当する文字列を返します。
【引数】
Path
ファイル・パス・オブジェクト、または、入力ファイル・パス
入力ファイル・パスに相当する文字列
返り値
返り値は、データが存在するファイル・パスを表示するため、データ・ファイルがあるフォルダーの
パスを取得するために使うことができます。
返り値を、
ReadFile
など、ファイルの内容にアクセスする関数に渡すと、期待と異なるデータを入力
Path 引数が
new_FilePathForFileInScript
の返り値を、GetFilePath の
してしまうことがあります。 たとえば、
引数に指定したときは、スクリプトの中のコメントではなく、スクリプト・ファイル全体を入力します。
ソース
→ vbslib.vbs
Path 引数が 文字列なら、その文字列を返します。
なら、WScript.ScriptFullName を返します。
FilePathClass 型
← ▼ ▲
その他
→ ReplaceFileNameWildcard
ワイルドカードを使って、ファイルパスを変更します。
旧仕様
IsAbsPath
→ IsFullPath
GetAbsPath
→ GetFullPath
→ GetParentFullPath
GetParentAbsPath
← ▼ ▲
ファイル一覧、ArrayFromWildcard
Function ArrayFromWildcard( WildcardPath as string ) as PathDictionaryClass of Nothing
ワイルドカードを展開します。 サブ フォルダーも検索します。
【引数】
ワイルドカードを含むパス。フォルダー指定も可。配列可
WildcardPath
For Each step_path In ArrayFromWildcard( "data\*" ).FilePaths
echo step_path
Next
(*1) WildcardPath 引数 （vbslib のワイルドカード）
(*1)
可能：
"*", "*.txt", "file*", "folder\*.txt", Array( "Fo\*.txt", "Fo\*.log" ),
"folder", "Debug\", "Fo\*.txt | Fo\*.log", "Fo\*.txt, Fo\*.log",
"NoWildcard.txt", "folder\*", "fo\*\file.txt", "*\file.txt", ".\file.txt"
→ ファイル一覧 (VBScript)
関連
→ ファイル一覧
テスト
→ EnumFolderObject
高速なフォルダ一覧
ファイル名やフォルダー名でソートされます。
サンプル
性能
不可能：
"folder*\file.txt"
→ CallForEach_copy
ファイル・パスの配列を使ってコピーする
ソース
→ vbslib.vbs
返り値
PathDictionaryClass
of Nothing
→ T_Wildcard.vbs
T_ArrayFromWildcard1
サブ フォルダー記号
が使えます。 例： "folder\*\back_up.txt", "folder\.\*.txt"
→ PathNameCompare
→ ファイルを一覧するときの速度
PathDictionaryClass のオブジェクトを指定したら、そのオブジェクトを返します。
ワイルドカードが、ファイル名やフォルダー名に相当する部分（もっとも右の \ の右側）に
あれば、サブ・フォルダーも検索します。
が優先されます。
サブ フォルダー記号
ただし、WildcardPath 引数に指定した
サブ フォルダー記号が指定されていない（ .\ も *\ もない）ときは、
→ dir, tree (バッチ)
指定したパスのファイルやフォルダーがないときはエラーにします（サブ フォルダー
記号 * や、ワイルドカードが無いときのみ）。
→ ArrayFromWildcard2
ファイルに対する処理の場合（ArrayFromWildcard の返り値の FilePaths プロパティ
などが参照される場合）、フォルダーのパスを指定すると、サブ・フォルダーにある
ファイルも検索します。
→ Expand_glob_Pattern
BasePath プロパティが指定フォルダーになる ArrayFromWildcard
ArrayFromWildcard2
と違い、BasePath プロパティは、カレント フォルダーになります。
path = GetFirst( ArrayFromWildcard( "Sub\File*.txt" ).FilePaths )
サンプル
ワイルドカードを１つだけ展開します。
← ▼ ▲
ファイルを一覧するときの速度
→ ファイルを一覧するときの速度 - VBScript
参考
テスト
→ T_Wildcard.vbs # T_Wildcard_Speed
EnumFolderObject
最も速いのは、
を使う方法です。
最も扱いやすいのは、
ArrayFromWildcard2
を使う方法です。
中間的なのは、
ExpandWildcard
を使う方法です。
← ▼ ▲
ExpandWildcard
Sub ExpandWildcard( WildcardPath as string, Flags as integer,
out_Folder as string, out_StepPaths as array of string )
ワイルドカードを展開します。 サブ・フォルダーも検索します。
【引数】
out_Folder
out_StepPaths
（出力） wildcard が含まれるフォルダのフル・パス
（出力） ワイルドカードにマッチした相対パスの配列
ワイルドカードを含むパス。フォルダ指定も可。配列可
WildcardPath
Set c = g_VBS_Lib
ExpandWildcard "data\*", c.File or c.SubFolder, folder, step_paths
For Each step_path In step_paths
If InStr( step_path, "\_setup_" ) = 0 Then '// 除外する場合
echo GetFullPath( step_path, folder ) '// g_fs.BuildPath は使わないこと
End If
Next
フラグの論理和
Flags
c.SubFolder
wildcard
f.txt
f.bin
f.txt
sub\f.txt
False
○
×
×
f.txt
True
○
×
○
*.txt
sub\abc.txt
×
×
○
True
×
○
○
sub\*
sub
True
True
×
×
○
○
×
×
×
×
(*1) WildcardPath 引数
(*1)
→ ファイル一覧 (VBScript)
関連
→ ファイル一覧
旧 F_File, F_Folder, F_SubFolder
テスト
→ EnumFolderObject
高速なフォルダ一覧
g_Vers("ExpandWildcard_Sort") = True
下記のように設定してから、ExpandWildcard を呼び出すと、ファイル名やフォルダー名で
ソートされます。 少し遅くなりますが、列挙されるファイルの順番がどのような環境でも
→ T_Wildcard.vbs # Main
(*2)
(*2) Flags 引数
c.File
c.Folder
c.SubFolder
下記の定数の or。 下記の c は、g_VBS_Lib の返り値。
c.FullPath
c.ArrayOfArray
ファイルを検索する
フォルダーを検索する
サブ・フォルダーも検索する。
out_Folder を out_StepPaths に含め、out_Folder = Empty にする
out_StepPaths の配列要素数を、WildcardPath に指定した配列
の要素数と同じにして、配列要素は、それぞれのワイルドカード
にマッチしたパスの配列にする
サンプル
性能
→ CallForEach_copy
ファイル・パスの配列を使ってコピーする
c.SubFolderIfWildcard
c.NoError
指定したパスに見つからないときにもエラーにしない
ソース
→ vbslib.vbs
→ (*1) ArrayFromWildcard の WildcardPath 引数
→ ファイルを一覧するときの速度
ExpandWildcard_Sort 変数
ソース
→ vbslib.vbs
サブ フォルダー記号
ただし、WildcardPath 引数に指定した
が優先されます。
→ (*1) ArrayFromWildcard の WildcardPath 引数
サブ・フォルダーも検索するかどうかは、ワールドカードが
指定されたかどうかなどによって決めます。
詳細は、
c.EmptyFolder
空のフォルダーを検索する。
out_StepPaths 引数に出力されるパスの末尾には \ が付きます。
sort_setting_back_up = g_Vers("ExpandWildcard_Sort")
g_Vers("ExpandWildcard_Sort") = True
:
g_Vers("ExpandWildcard_Sort") = sort_setting_back_up
→ IsMatchedWithWildcard
ワイルドカードにマッチするかどうか
で比較したソートを行います。 このとき、フォルダーの区切り記号は含まれません。
同じになります。 内部でそれぞれのフォルダーを展開するごとに
NumStringNameCompare
← ▼ ▲
ExpandWildcard の内部データ構造
ExpandWildcardWorkClass
.items
.is_root_folder
.folder_path
.first_out_count
.out_fast_ubound
.sort_box
ArrayClass <ExpandWildcardItemClass>
boolean
string
integer
integer
ArrayClass <string>
.re
.re2
.IsSubFolder
re_type (*1)
boolean
Empty
re2_type (*1)
(*1) re_type と re2_type は、以下の組み合わせのいずれかです。
re_type
re2_type
RegExp
RegExp
Empty
Empty
Empty
StrMatchKey
NameOnlyClass
WildcardPath 引数
"*"
ワイルドカードがない
"*" が１個のとき
* が２つのときか、? があるとき
work
reg_exp_dic
dictionary < (folder_path), ArrayClass <ExpandWildcardItemClass> >
out_StepPaths
array < File or Folder or (abs_path) >
// ExpandWildcard_sub 開始時の UBound( out_StepPaths )
// 実質的な UBound( out_StepPaths )
← ▼ ▲
Expand_glob_Pattern
テスト
ソース
→ T_Wildcard.vbs
→ ToolsLib.vbs
Function Expand_glob_Pattern( in_Pattern as string ) as array of string
を展開します。
【引数】
in_Pattern
globパターンの文字列
返り値
globパターンを展開したパスの配列
globパターン
T_glob_1
"*.txt"
"[1-3].txt"
"s/*.txt"
サンプル
in_Pattern 引数
ワイルドカードは、カレント フォルダーにあるファイルやフォルダーの名前に展開されます。
サブフォルダーは展開されません。
展開結果の例
"1.txt", "2.txt", "3.txt", "example.txt"
"s\example.txt"
"[12].txt"
"1.txt", "2.txt"
"[012].txt"
"1.txt", "2.txt" （0.txt がない場合）
"[!1].txt"
"1.txt", "2.txt", "3.txt"
"2.txt", "3.txt" （1.txt 以外の ?.txt）
"?.txt"
"1.txt", "2.txt", "3.txt"
"[!12].txt"
"3.txt" （1.txt, 2.txt 以外の ?.txt）
"s/v/*.txt"
"s/v\example.txt" （ワイルドカードの直前だけ\）
関連
→ ArrayFromWildcard
←
↓