←
▼
▲
(src)
Sub new_ObjectsFromStream( out_Objs as array of object, ClassName as string, Stream as variant )
ストリームから、オブジェクトをいくつか生成して、配列に格納します。
【引数】
out_Objs
ClassName
(出力) ストリームから生成したオブジェクトが入った配列
生成するオブジェクトのクラス名
Stream
XML ストリーム
1つもオブジェクトを生成しなかったときでも、out_Objs には配列が格納されます。
ClassName, Stream については、
テスト
→ T_ObjectFromStream フォルダ
←
▼
▲
参考
Function new_X( Name as string ) as object
文字列で指定した名前のクラスのオブジェクトを生成します。
Function new_ClassA()
Set new_ClassA = new ClassA
End Function
機能的には、"new_" + Name の関数を呼び出すだけなので、別途関数を用意する必要があります。
たとえば、Name = "ClassA" なら、new_ClassA の関数が呼ばれます。
(src)
ただし、多くの場合、get_Object の方が適していることが多いので、get_Object を使うことを検討
してください。
サンプル:
Dim obj : Set obj = new_X( "ClassA" )
←
▼
▲
Class NameOnlyClass
Public Name
Public Delegate
End Class
Name 変数(任意の型の識別値)と、Delegate 変数(指しているオブジェクトなど)の
対応関係を表すクラスです。
(src)
関連
←
▼
▲
イベントが発生したらコールバックされる関数の集合
参考
イベントが発生したときにコールバックされる関数を登録します。
イベントが発生したときに、登録されているコールバック関数を呼び出します。
←
▼
▲
Sub EventResponders::Add( Func as Function, Object as variant )
イベントが発生したときにコールバックされる関数を登録します。
【引数】
Func
Object
コールバックされる関数
Func の第1引数に渡す値
サンプル:
obj.OnEventX.Add GetRef( "OnEventX" ), Empty
参考
←
▼
▲
Sub EventResponders::Calls( Caller as variant, Args as variant )
イベントが発生したときに使い、登録されているコールバック関数を全て呼び出します。
【引数】
Caller
Args
イベントが発生したオブジェクト
イベントのパラメーター
サンプル:
Me.OnEventX.Calls Me, Empty
参考
←
▼
▲
Function CreateGuid() as string
GUID を生成します。
2D7E3038-E395-460A-86CC-C8AB3C3D5D54
返り値の例:
(src)
←
▼
▲
Function KeyClass::IsSame( Key as object ) as boolean
Function KeyClass::SetKey( Key as object ) as object
キーとなるオブジェクトを登録します。 一度しか登録できません。 返り値は、Key です。
以前登録したキーと同じかどうかを判定します。
サンプル:
Dim g_AppKey
Dim AppKey : Set AppKey = new KeyClass ' for Ident only
Set g_AppKey = new KeyClass : g_AppKey.SetKey( AppKey )
If not g_AppKey.IsSame( AppKey ) Then Err.Raise 1,,"Invalied AppKey"
以前登録した特定のオブジェクトかどうかを判定します。
KeyClass から特定のオブジェクトを取得することはできないので、グローバルスコープに、
KeyClass オブジェクトを置いても、特定のオブジェクトへの参照を複製することから守ります。
参考
←
▼
▲
関連
←
▼
▲
ファイル、またはフォルダが同一かどうかを比較します。
ファイルまたはフォルダを削除します。
src から dst にファイルまたはフォルダをコピーします。
フォルダを作成します。
カレントフォルダを移動します。
src から dst にファイルまたはフォルダを移動します。
フォルダまたはファイルが存在するかどうかを返します。
テキストファイルの中で、指定したキーワードを含む行を返します。
指定のテキストを内容とした、テキストファイルを作成します。
ワイルドカードを展開します。 サブ・フォルダーも検索します。
他にもあります。左のツリーから選択してください。
ファイル名を変更します。
相対パスを返します。
書き込み可能なフォルダの設定オブジェクトを生成します。
書き込み可能なフォルダを設定します。
書き込み可能でない場所にライトしたときの動きを設定します。
スクリプトが想定していない場所にライトしたときの警告
テキストファイルの内容を表示します。
コマンドプロンプト準拠関数
vbslib オリジナル関数
圧縮(zip)ファイルを解凍します。
FileSystemObject を参照するグローバル変数です。
参考
テスト
→ ファイル操作のテスト
ファイルを操作する主な関数を下に一覧します。
すべての関数は、左のツリーを展開してください。
テキストファイルを開きます。(リード用)
テキストファイルを開きます。(ライト用)
テキストファイルの内容を変更します。
絶対パスを返します。
テンポラリ・フォルダの中のパスを返します。
サブフォルダのオブジェクトを高速に辞書に列挙します。
指定した名前のファイルをライトするときにブレークさせます。
負荷が高いときに発生する書き込み拒否エラーに対処します。
一部がバイナリになっているテキストファイルを作成します。
CSV 形式の1行を解析して、配列に格納します。
XML ファイル、または XML 形式の文字列を読み込みます。
←
▼
▲
Sub cd( Path as string )
カレント・フォルダーを変更します。
(src)
存在しないフォルダを指定すると、E_WIN32_FILE_NOT_FOUND エラーになります。
ファイルのパスを指定すると、E_WIN32_DIRECTORY エラーになります。
関連
cd "FolderA"
t = ReadFile( "File.txt" )
テスト
→ T_cd_do.vbs # cd
cd g_start_in_path
参考
カレント・フォルダーの中にある FolderA フォルダーに、カレント・フォルダー
を変更します。 File.txt は、FolderA フォルダーにあるファイルになります。
現在のカレント・フォルダーを、プロセス起動時のカレント・フォルダーに
変更します。
main 関数、または main2 関数を呼ばれたときのカレント・フォルダーは、プロセス起動時
のカレント・フォルダーではなく、メイン.vbs ファイルがあるフォルダーになります。
メイン.vbs ファイルがあるフォルダーからの相対パスを指定するときは、cd 関数を呼び
出す必要はありません。 (この仕様は、vbslib4 から)
【引数】
Path
新しいカレント・フォルダーのパス
"FolderA"
サンプル
サンプル
ファイル:
vbslib.vbs
←
▼
▲
Sub funcA()
Dim ds_:Set ds_= new CurDirStack
cd "sub"
End Sub '// 元のフォルダに戻る
オブジェクトが破棄されるタイミングで、カレント・フォルダーを元に戻すオブジェクトです。
下記の場合、関数 funcA から返ると、CurDirStack オブジェクトのデストラクタで、関数に
入ったときのカレント・フォルダーに戻ります。
関連
(src)
テスト
→ T_cd_do.vbs # CurDirStack
サンプル
ファイル:
vbslib.vbs
←
▼
▲
Sub pushd( dir as string )
カレントフォルダを移動します。 ただし、popd で戻れるようにします。
(src)
テスト
→ T_cd_do.vbs # pushd
pushd "FolderA"
popd '// 元のフォルダに戻る
サンプル
ファイル:
vbslib.vbs
関連
←
▼
▲
Sub popd()
カレントフォルダを pushd する前に戻します。
(src)
テスト
→ T_cd_do.vbs # popd
pushd "FolderA"
popd '// 元のフォルダに戻る
サンプル
ファイル:
vbslib.vbs
関連
←
▼
▲
SrcPath のファイルまたはフォルダを、DstFolderPath フォルダーの中にコピーします。
Sub copy( SrcPath as string, DstFolderPath as string )
→ ファイルコピーの引数 (FileSystemObject の場合)
copy 関数は、ファイルやフォルダの有無によって動きが変わらないようにするため、コマンド
プロンプトの copy や FileSystemObject の CopyFile 関数と、若干動きが異なります。
しかし、エクスプローラーなどの一般的なファイラーの動きと同じです。
DstFolderPath 引数
SrcPath 引数
a.txt ファイル
動作
C:\dst_folder
a.txt を dst_folder にコピーします
(dst_folderがフォルダのとき)
C:\dst_folder\a.txt
a.txt フォルダーを作成して、その中に a.txt を
コピーします
フォルダ aa を作成して、aa フォルダの中に
aa フォルダをコピーします
C:\dst_folder\aa
フォルダ aa を dst_folder の中にコピーします
C:\dst_folder
aa フォルダー
C:\dst_folder\bb
ワイルドカード
ファイルとフォルダを dst_folder にコピーします
C:\dst_folder
C:\dst_folder\bb
フォルダ bb を作成して、その中へファイルと
フォルダをコピーします。
フォルダ bb を作成して、bb フォルダの中に
aa フォルダをコピーします
【引数】
SrcPath
DstFolderPath
コピー元のファイルパス、またはフォルダーパス
コピー先のフォルダーパス (ファイルパスは不可)
copy "src", "dst"
copy "src\*", "dst"
サンプル
src フォルダーの内容を dst フォルダーの中にコピーします
(src)
エラー
SrcPath に指定したファイルが見つからない
DstFolderPath がロックされているか、ファイルが存在する
E_WriteAccessDenied
src フォルダーを dst フォルダーの中にコピーします
→ T_Copy.vbs # [T_Copy]
テスト
vbslib3 の copy の DstFolderPath に指定したパスがフォルダーではないときは、ファイル名を
変える動きでしたが、vbslib4 の copy では、必ず DstFolderPath の新規フォルダーを作成して、
その中へコピーします。 これは、エクスプローラーなどの一般的なファイラーの動きと同じです。
コピーと同時にファイル名を変える時は、copy_ren を使ってください。
g_Vers("CopyTargetIsFileOrFolder") = 1
vbslib ver3 との違い
参考
→ [T_Writable]
関連
参考
ファイル:
vbslib.vbs
src\*
コピー先にファイルがあっても、上書き確認をユーザーに行わずに、上書きします。
ユーザーには、上書きするフォルダーやファイルのバックアップをとるようにガイドしてください。
フォルダーをコピーするとき、SrcPath のフォルダーと DstFolderPath のフォルダーを全く同じ
ファイル構成にしたいときは、DstFolderPath のフォルダーを削除してからコピーしてください。
そうしなければ、DstFolderPath の中にあるファイルと同じ場所にあるファイルが SrcPath の
中にに無くても、そのファイルは無くならないためです。 これは、エクスプローラーなどの一般的
なファイラーの動きと同じです。
Src
FileA.txt
コピー元のフォルダー
コピーする前のコピー先
FileB.txt
Dst
FileA.txt
コピーした後のコピー先
Dst
FileB.txt
vbslib ver3 の copy やコマンドプロンプトの copy と動きが異なる場合があります。(下記)
vbslib3 で作成したスクリプトをそのまま動かすと、DstFolderPath にファイルパスを指定した
copy は、指定したファイル名と同じ名前のフォルダの中にコピーするようになります。 しかし、
そのまま、実行を続けても、開こうとするファイルがフォルダーであるため開けない、というエラー
でブレークするため、大きな問題にはならないでしょう。 また、ファイルには一般に拡張子が
付いているので、vbslib3 で作成した copy を vbslib4 で動かすと、拡張子が付いたフォルダー
が作られます。拡張子が付いたフォルダーがあれば、copy の移植を検討してください。
vbslib3 の仕様に戻したいときは、下記のように設定してから copy を呼び出してください。
仕様を変更した理由は、copy する前の DstFolderPath がフォルダーであるかないかによって、
コピー先が変わらないようにするためです。 (あるかないかを判定する If 文が不要になります)
←
▼
▲
(src)
Sub copy_ren( SrcPath as string, DstPath as string )
ファイルまたはフォルダーの名前を変えてコピーします。 (copy and rename)
【引数】
SrcPath
DstPath
コピー元のファイル、または、フォルダーのパス
コピー先のファイル、または、フォルダーのパス
SrcPath がファイルなら、DstPath に指定したパスもファイルにしてください。
SrcPath がフォルダーなら、DstPath に指定したパスもフォルダーにしてください。
コピー先にファイルがあっても、上書き確認をユーザーに行わずに、上書きします。
ユーザーには、上書きするフォルダーやファイルのバックアップをとるようにガイド
してください。
フォルダーをコピーするとき、SrcPath のフォルダーと DstPath のフォルダーを
全く同じファイル構成にしたいときは、DstPath のフォルダーを削除してからコピー
してください。
ファイル:
vbslib.vbs
copy_ren "src", "dst"
サンプル
src フォルダーの内容を dst フォルダーの中にコピーします。
または、src ファイルの内容を、dst ファイルの中にコピーします。
関連
参考
サンプル
copy_ren "src", "dst"
copy "src\*", "dst"
上記の2行は、同じ処理です。
src フォルダーの内容を dst フォルダーの中にコピーします。
→ T_Copy.vbs # [T_Copy]
テスト
←
▼
▲
Sub copy_ex( SrcPath as string, DstPath as string, Option_ as integer )
Option_ に指定したように、特殊なコピーをします。
【引数】
SrcPath
DstPath
コピー元のパス。 ワイルドカードが使えます
コピー先のフォルダーのパス
Option_
特殊なコピーの内容
SrcPath に指定したワイルドカード以外の部分をカットしたファイル名になるようにコピーします。
サブフォルダにあるファイルもコピーします。
Dim c : Set c = g_VBS_Lib
copy_ex "src\*_set1.*", "dst", c.CutTag
src フォルダーにある _set1. を名前に含むファイルを、dst フォルダーにコピーします。
ただし、ファイル名の一部にある _set1 はカットされます。
複数のファイルが入ったフォルダが複数あって、それらを上書きコピーして合成したフォルダから、
元の1つのフォルダを取り出すようなコピーができます。
src フォルダ
file1_set1.txt
file1_set2.txt
file2_set2.txt
file2_set1.txt
file2.txt
dst フォルダ
file1.txt
コピー先に同じ名前のファイルがあるファイルだけ、コピーします。
(src)
Dim c : Set c = g_VBS_Lib
copy_ex "src\*", "dst", c.ExistOnly
file1.txt
dst フォルダ
file3.txt
file3.txt
file4.txt
file2.txt
file1.txt
src フォルダ
参考
_set1
file1.txt と file3.txt だけコピーします。
→ T_CopyEx.vbs # [T_CopyExists]
テスト
→ T_CopyEx.vbs # [T_CopyTagFiles]
テスト
関連
ファイル:
vbslib.vbs
←
▼
▲
Sub cat( FilePathss as string or array of string, OutputPath as string )
ファイルの内容を連結します。
【引数】
FilePathss
OutputPath
ファイルのパスの配列
連結した内容を格納するファイルのパス
ファイル:
vbslib.vbs
→ T_fc.vbs # [test_in_file]
テスト
(src)
サンプル
Dim out, out1 : out = "log.txt" : out1 = "log1.txt"
del out
r= RunProg( "...", out1 )
cat Array( out, out1 ), out
del out1
out, out1
out
プログラムの出力を out に追加します。
サンプル
cat Array( "log.txt", "plus.txt" ), "log.txt"
log.txt ファイルの内容に out.txt ファイルの内容を追加します。
"log.txt", "plus.txt"
"log.txt"
→ cat コマンド(Linux)
参考
実行前の log.txt
plus.txt
実行後の log.txt
123
456
ABC
DEF
+
=
123
456
ABC
DEF
←
▼
▲
(src)
Set o = new CopyNotOverwriteFileClass
o.SourcePath = "work\Source"
o.DestinationPath = "work\Destination"
o.SynchronizedPath = "work\Synchronized"
o.Copy
サンプル
フォルダーをコピーします。 ただし、コピー先のファイルと内容が異なるファイルはコピーしないで、
メニューに一覧します。 メニューを閉じるまで、Copy メソッドから戻りません。
Copy の代わりに CopyForce を呼び出すと、メニューを表示しないで、強制上書きします。
関連
.SourcePath は、コピー元のフォルダーのパス。
.DestinationPath は、コピー先のフォルダーのパス。
.SynchronizedPath は、.DestinationPath にコピーしたファイルのコピーが入ります。
.SynchronizedPath にあるファイルと .DestinationPath にあるファイルの内容が異なれば、
.DestinationPath にあるファイルが修正されたと判断されます。
テスト
→ T_CopyDelNotOver フォルダ
←
▼
▲
その他
テキストファイルの中の相対パスを絶対パスに変換してコピーします。
テキストファイルの内容を変更します。
ファイルを安全に更新します。
ショートカットを作成します。
複数のファイルをファイルコピーです。