←
▼
▲
Dim zip1, sub_fo1, step_paths, step_path, target_root, work_root
'//=== convert binary file emulated
zip1 = work_root +"\converted_files"
unzip "converted_files.zip", zip1, Empty
sub_fo1 = "target"
step_paths = Array( sub_fo1+"\file1.bin", sub_fo1+"\file2.bin" )
For Each step_path In step_paths
ConvertBinaryEmulated target_root +"\"+ step_path, Empty, False, _
zip1+"\src\"+step_path, zip1+"\dst\"+step_path
Next
del zip1
書きかけ
(src)
←
▼
▲
その他
PartRep
-
←
▼
▲
テンポラリ・フォルダの場所の例: (Windows Vista/7 のとき)
C:\Users\user1\AppData\Local\Temp\Report
vbslib を使うと、PC の内臓 HDD (OSが指定するテンポラリ・フォルダの中の Report フォルダ)
に、一時ファイルを作成することがあります。
PCを借りているときは情報漏えいに注意してください。
参考
テンポラリ・フォルダの設定は、
関数を作成することで変更できます。
テンポラリ・フォルダを削除するときは、
ゴミ箱にも一時ファイルが格納されることがあります。
ごみ箱を空にしてください。
←
▼
▲
Function GetTempPath( BasePath as string ) as string
の中のファイルやフォルダのパスを返します。
Dim f, path
Dim c : Set c = g_VBS_Lib
path = GetTempPath( "DataA_*.xml" )
Set f = OpenForWrite( path, c.Unicode )
f.WriteLine "<sample/>"
f = Empty
start path
サンプル:
サンプル・ファイルパス: (Windows Vista のとき)
C:\Users\user1\AppData\Local\Temp\Report\090401\DataA_090401_1300_1.xml
BasePath 引数は、テンポラリ・フォルダからの相対パスになり、* はタイムスタンプと
識別番号になります。 ? は識別番号になります。 存在するファイルパスにならない
ように調整され、常に新しいファイルを作成します。 同時に保存期間を超えたファイル
やフォルダを削除します。(起動したプロセスで初めてテンポラリ・フォルダにファイル
を作成するとき、および g_TempPath= Empty のときのみ)
DataA_*.xml
c.Unicode
<sample/>
(src)
start CreateFile( "*.xml", obj.xml )
GetTempPath
サンプル: obj の xml プロパティを、テンポラリファイルに出力して開きます。
obj
にワイルドカードを指定すれば、テンポラリ・フォルダにファイルを作る
ので、簡単にテキストファイルや XML ファイルを作成できます。
ファイルパスは、環境変数 TEMP の値を使っています。 上段は * 、下段は ? を使ったとき。
C:\Users\user1\AppData\Local\Temp\Report\090401\DataA_1.xml
【引数】
BasePath
返り値
ファイル名のテンプレート。 * または ? を含んでもよい
テンポラリ・フォルダの中のファイルパス
BasePath に、* または ? を含んでいる場合は、ファイルまたはフォルダが存在
しないパスに変換して返します。
←
▼
▲
デスクトップの絶対パスを返す。
絶対パスを返す。
相対パスを返す。
親フォルダの絶対パスを返す。
絶対パスかどうかを返します。
ファイルパスの最後文字列を追加します。
参考
関連
←
▼
▲
Function DesktopPath() as string
デスクトップの絶対パスを返します。
(src)
←
▼
▲
Function GetAbsPath( StepPath as string, BasePath as string ) as string
絶対パスを返します。
【引数】
StepPath
BasePath
返り値と同じファイルの相対パス
基準フォルダの絶対パス、Empty でカレントフォルダ
返り値
StepPath と同じファイルの絶対パス
(src)
g_fs.GetAbsolutePathName は、StepPath に * が入っていると、ピリオドに
置き換わってしまいますが、GetAbsPath では発生しません。
サンプル:
path2 = GetAbsPath( Path, BaseFolderPath )
path2 = GetAbsPath( "..\"+ Path, BaseFilePath )
path2 = GetAbsPath( Path, GetParentAbsPath( BaseFilePath ) )
BasePath をファイルパスにしたときは、StepPath を1つ親にしてください。
GetAbsPath( "file.txt", "C:\folder1" ) =
GetAbsPath( "..\file.txt", "C:\folder1\file2.txt" )
テスト
関連
→ T_Path.vbs # [T_GetAbsPath]
親フォルダー、または、その親フォルダー … と探すときは、"..." とピリオドを
3つ並べてください。 ただし、スクリプトを記述できるときは、
GetAbsPath( "...\file.txt", "C:\folder1\sub" )
上記の返り値は、C:\folder1\sub\file.txt 、C:\folder1\file.txt 、C:\file.txt
のいずれかになります。 または、E_PathNotFound エラーになります。
を呼ぶ方が可読性が高まります。
←
▼
▲
Function GetStepPath( AbsPath as string, BasePath as string ) as string
相対パスを返します。
【引数】
AbsPath
BasePath
返り値と同じファイルの絶対パス
基準フォルダの絶対パス
返り値
AbsPath と同じファイルの相対パス
(src)
テスト
→ T_Path.vbs # [T_GetStepPath]
←
▼
▲
Function GetParentAbsPath( Path as string ) as string
Path に指定したファイルやフォルダの親フォルダの絶対パスを返します。
【引数】
Path
基準パス(相対パスは、カレントからの相対)
返り値
親フォルダの絶対パス
(src)
cd "C:\Folder"
Assert GetParentAbsPath( "sub\file.txt" ) = "C:\Folder\sub"
関連
参考
サンプル
←
▼
▲
GetFilePathSeparetor
Function GetFilePathSeparetor( Path as string ) as string
Path に入っているフォルダーの区切り記号をします。
【引数】
Path
ファイルなどのパス
返り値
フォルダーの区切り記号
(src)
Assert GetFilePathSeparetor( "http://www.example.com/" ) = "/"
サンプル
フォルダーの区切り記号が無いときは、"\" を返します。
←
▼
▲
Function SearchParent( StepPath as string ) as string
StepPath に指定したファイルまたはフォルダを、親フォルダに向かって探します。
【引数】
StepPath
ファイル名、または相対パス
返り値
見つかったファイルまたはフォルダの絶対パス
サンプル:
Set root = LoadXML( SearchParent( "common.xml" ), Empty )
(src)
→ T_Path.vbs # T_SearchParent
テスト
..\common.xml などを開きます
関連
見つからないときは、Empty を返します。
を使ってピリオドを3つ並べる記法を展開する
←
▼
▲
Function IsAbsPath( Path as string ) as boolen
Path に指定したパスが絶対パスかどうかを返します。
(src)
テスト
→ T_Path.vbs # [T_IsAbsPath]
←
▼
▲
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]
テスト
関連
キーワード:
→ StrT_addLastOfFileName (clib)
AddLastOfFileName( "file.txt", "." ) = "file"
拡張子を無くす
AddLastOfFileName( path1, "."+g_fs.GetExtensionName( path2 ) )
拡張子を合わせる
←
▼
▲
(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"
補足
拡張子も含めて削除するときは、
を使ってください。
関連
テスト
→ T_Str.vbs # [T_StrComp]
Empty または
←
▼
▲
Function StrCompLastOfFileName( Path as string, LastStr as string, Opt as integer ) as integer
(src)
ファイル名(拡張子を除く)の末尾を比較します。
【引数】
Path
LastStr
比較されるファイル名またはパス
Path の末尾と比較する文字列
Opt
Empty または
Str 引数の値
LastStr 引数の値
返り値
返り値
Path の末尾 = LastStr なら、0
"ABCDE.txt"
"CDE"
0 (=一致)
0以外(=異なる)
"ABC"
"ABCDE.txt"
0以外(=異なる)
"CDE.txt"
"ABCDE.txt"
関連
テスト
→ T_Str.vbs # [T_StrComp]
←
▼
▲
Function GetTagJumpParams( PathAndFragment as string ) as TagJumpParams
(src)
タグジャンプ形式の文字列(パス+行番号)を分解します。
サンプル:
Set jumps = GetTagJumpParams( "C:\folder\file1.txt(100)" )
'// jumps.Path = "C:\folder\file1.txt"
'// jumps.LineNum = 100
関連
テスト
→ T_Path.vbs # [T_GetTagJumpParams]
→ T_EditorDiff_Manually.vbs # [T_EditorManually]
Class TagJumpParams
Public Path '// 絶対パスとは限りません
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"
参考
タグジャンプ形式の文字列の詳細
GetTagJumpParams( "C:\folder\file1.txt(100)" ).Path
←
▼
▲
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 を使ってください。
←
▼
▲
Function GetTagJumpLine( PathAndLine as string ) as integer
タグジャンプ形式の文字列(パス+行番号)から、行番号を取り出す。
サンプル:
line = GetTagJumpPath( "C:\folder\file1.txt(100)" )
line には、100 が入ります。
(src)
関連
テスト
→ T_Path.vbs # GetTagJumpLine
PathAndLine に行番号が無いときは、0 が返ります。
廃止予定です。 GetTagJumpParams を使ってください。
←
▼
▲
その他
ワイルドカードを使って、ファイルパスを変更します。
←
▼
▲
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
echo GetAbsPath( step_path, folder ) '// g_fs.BuildPath は使わないこと
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
×
×
○
○
×
×
×
×
可能:
不可能:
"*", "*.txt", "file*", "folder\*.txt", Array( "Fo\*.txt", "Fo\*.log" )
"folder*\file.txt"
(src)
関連
→ ファイル一覧
テスト
高速なフォルダ一覧
g_Vers("ExpandWildcard_Sort") = True
下記のように設定してから、ExpandWildcard を呼び出すと、ファイル名やフォルダー名で
ソートされます。 少し遅くなりますが、列挙されるファイルの順番がどのような環境でも
同じになります。
→ T_Wildcard.vbs # Main
c.File
c.Folder
c.SubFolder
下記の定数の or。 下記の c は、g_VBS_Lib の返り値。
c.AbsPath
c.ArrayOfArray
ファイルを検索する
フォルダーを検索する
サブフォルダーも検索する
out_Folder を out_StepPaths に含め、out_Folder = Empty にする
out_StepPaths の配列要素数を、WildcardPath に指定した配列
の要素数と同じにして、配列要素は、それぞれのワイルドカード
にマッチしたパスの配列にする
サンプル
性能
→ T_Wildcard.vbs # T_Wildcard_Speed
←
▼
▲
Function IsWildcard( path as string ) as boolean
文字列の中にワイルドカードを含むかどうかを返します。
【引数】
path
返り値
調べる文字列
path の中にワイルドカードを含むかどうか
(src)
関連
←
▼
▲
→ T_Wildcard.vbs # [T_ReplaceFileNameWildcard]
Assert ReplaceFileNameWildcard( "Fo\File.txt", "Fo\*.txt", "Fo\*.ini" ) = "Fo\File.ini"
Function ReplaceFileNameWildcard( Path as string, FromStr as string, ToStr as string )
ワイルドカードを使って、ファイルパスを変更します。
【引数】
Path
FromStr
ファイルパス(ワイルドカードは使えません)
変更前の文字列。ワイルドカード可能。
ToStr
変更後の文字列。ワイルドカード可能。 "" 可能。
ファイル:
vbslib.lib
サンプル
変更後のファイルパス。 Empty=Path が FromStr にマッチしなかった
返り値
(src)
テスト
Path に親フォルダー名が含まれるときは、FromStr, ToStr にも親フォルダー名を含めてください。
s= ReplaceFileNameWildcard( Fo\File.txt", "Fo\*.txt", "Fo\*.xml" '// OK
s= ReplaceFileNameWildcard( Fo\File.txt", "*.txt", "*.xml" '// NG
Path が、FromStr にマッチしなかったときは、Empty が返ります。
関連
ワイルドカードにマッチするかどうか
←
▼
▲
Sub RemoveWildcard( WildCard as string, fnames as array of string )
ワイルドカードでフォルダ名かファイル名に一致する文字列を配列から除きます。
【引数】
ワイルドカードを含むファイルまたはフォルダの名前
WildCard
パスが入った文字列の配列
fnames
WildCard で指定できるワイルドカードは、先頭に * だけです。
(src)
←
▼
▲
サブフォルダのオブジェクトを高速に辞書に列挙します。 サブフォルダのサブフォルダも列挙します。
【引数】
Opt
FolderPath
Empty を指定してください
調べるフォルダのパス。 このフォルダの中から列挙します
Sub EnumFolderObjectDic( FolderPath as string, Opt as Empty, out_Folders as dictinoary of Folder )
(出力) サブフォルダを含む Folder オブジェクトの辞書
out_Folders
out_Folders には、FolderPath の Folder オブジェクトと、FolderPath のサブフォルダーの Folder オブジェクト
の両方が含まれます。 FolderPath に相当するキーの値は "." です。
out_Folders は辞書型です。 キーは、フォルダーへの相対パスです。 その基準フォルダーは、FolderPath
です。 アイテムは、Folder オブジェクトです。
Dim folders1, folders2, step_path, file
EnumFolderObjectDic "C:\FolderA", Empty, folders1 '// [out] folders1
EnumFolderObjectDic "C:\FolderB", Empty, folders2 '// [out] folders2
For Each step_path In folders1.Keys
If not folders2.Exists( step_path ) Then
mkdir "C:\FolderB\"+ step_path
For Each file In folders1.Item( step_path ).Files
copy "C:\FolderA\"+ step_path + file.Name, "C:\FolderB\"+ step_path
Next
End If
Next
サンプル
(src)
EnumFolderObjectDic
EnumFolderObjectDic
関連
出力例
"."
"fe"
"fo1"
"fo1\fo1"
"fo1\fo11.ex"
"fo1\t1"
"fo2"
テスト
→ T_Wildcard.vbs # [T_EnumFolderObjectDic]