(for Internet Explorer)
← ▼ ▲
↑
OpenPickUpCopy
→ T_Wildcard.vbs
テスト
T_PathDictionary_XML_PickUpCopy
→ PickUpCopy1.xml
Function OpenPickUpCopy( in_PathWithID as string ) as OpenPickUpCopyClass
コピーするフォルダーの一部がどこかの情報が書かれた XML を開きます。
【引数】
in_PathWithID
PickUpCopies XML ファイルのパス、または、それと、# と、XML の id 属性
返り値
コピーするフォルダーの一部がどこかの情報が入ったオブジェクト
サンプル
OpenPickUpCopy( "PickUpCopy.xml" ).Copy "Folder1", "OutputFolder", Empty
Set copy_ = OpenPickUpCopy( "PickUpCopies.xml#Example" )
Set w_= AppKey.NewWritable( copy_.GetDefaultOutputPath( Empty ) ).Enable()
copy_.Copy Empty, Empty, Empty
"PickUpCopy.xml"
サンプル
"PickUpCopies.xml#Example"
"Folder1", "OutputFolder"
FilePathClass
in_PathWithID 引数に
を指定することもできます。 その場合、最初の PickUpCopy タグ
の内容が使われます。
コピーは上書きコピーを行います。 コピー先にすでにあるファイルが不要なら、削除した後で
コピーしてください。
OpenPickUpCopyClass
→ PickUpCopy コマンド
#Example を指定すると、id 属性の値が Example の PickUpCopy タグの 設定を使います。
#以下を指定しなければ、最初の PickUpCopy タグの 設定を使います。
参考
設定ファイル PickUpCopy.xml の説明
<PickUpCopies>
<Variable name="${FolderPath}" value="Folder1"/>
<Variable name="${ExceptExts}" value="*.ini, ${FolderPath}\B.txt"/>
<PickUpCopy id="Example"
default_source_path="Folder1"
default_destination_path="${SourceFolderName}_cleaned">
<Folder path=".">
<Except path="${ExceptExts}"/>
<Except path="Except"/>
</Folder>
</PickUpCopy>
<PickUpCopy id="2">
<File path="A.txt"/>
<File path="${RegExp(.*\.(txt|c|h))}"/>
</PickUpCopy>
</PickUpCopies>
PickUpCopies タグの名前は変更できます。
Variable タグ
で定義した ${ } 変数は、path, default_source_path, default_destination_path
属性から参照できます。
default_source_path, default_destination_path 属性は、
の引数に Empty を指定したときに使われます。
Example
PickUpCopies.xml
Copy メソッド(OpenPickUpCopyClass)
スクリプト
Copyメソッド
OpenPickUpCopy 関数が返した OpenPickUpCopyClass のオブジェクトの
を呼び出しています。
PickUpCopy.xml ファイルに書かれた設定に従って、Folder1 フォルダーの一部から
OutputFolder フォルダーへコピーします。
コールツリー
OpenPickUpCopyClass::Copy
(.vbs)
new_PathDictionaryClass_fromXML
(.vbs)
PathDictionaryClass_onRegExp
new_PathDictionaryClass_fromXML_Ex
(.vbs)
(.vbs)
LazyDictionaryClass::Item
LazyDictionaryClass::Me_Expand
(.vbs)
(.vbs)
(.vbs)
LazyDictionaryClass::Me_Call
PathDictionaryClass::LeafPaths
(.vbs)
PathDictionaryClass::Scan
(.vbs)
ExpandWildcard
(.vbs)
'// ソート「ファイル ＞ \ あり * ＞ \ なし * （拡張子のデフォルト） ＞ フォルダー」
// 正規表現を展開する。
// ファイルを一覧する。
copy_ren
// コピーする。
path 属性に ${RegExp( ... )} を記述すれば、
で複数のファイルを指定できます。
正規表現
OpenPickUpCopy
(.vbs)
← ▼ ▲
OpenPickUpCopyClass
OpenPickUpCopy
の返り値のクラス。
← ▼ ▲
Copy (OpenPickUpCopyClass)
Sub OpenPickUpCopyClass::Copy( in_SourcePath as string, in_DestinationPath as string,
in_Empty as Empty )
XML に指定したファイルまたはフォルダーをコピーします。
【引数】
in_SourcePath
in_DestinationPath
コピー元の基準フォルダーのパス、または、Empty
コピー先の基準フォルダーのパス、または、Empty
in_SourcePath 引数に Empty を指定したときは、XML の default_source_path 属性に指定したパス
が使われます。
in_DestinationPath 引数に Empty を指定したときは、XML の default_destination_path 属性に指定
したパスが使われます。
in_Empty
Empty を指定してください
<< OpenPickUpCopyClass
← ▼ ▲
GetDefaultSourcePath (OpenPickUpCopyClass)
フォルダーのパスを返します。
フル パスが返ります。
XML の default_source_path 属性に指定した ${ } 変数が展開された値が返ります。
Function GetDefaultSourcePath() as string
コピー元の基準フォルダーのパスを返します。
の in_SourcePath 引数に Empty を指定したときの、コピー元の基準
Copy メソッド
<< OpenPickUpCopyClass
← ▼ ▲
GetDefaultDestinationPath (OpenPickUpCopyClass)
フォルダーのパスを返します。
フル パスが返ります。
XML の default_destination_path 属性に指定した ${ } 変数が展開された値が返ります。
XML の default_destination_path 属性に指定した ${SourceFolderName} は、
コピー元の基準フォルダーのパスに展開された値が返ります。
Function GetDefaultDestinationPath( in_SourcePath as string ) as string
コピー先の基準フォルダーのパスを返します。
【引数】
in_SourcePath
コピー元の基準フォルダーのパス、または、Empty
返り値
コピー先の基準フォルダーのパス
<< OpenPickUpCopyClass
の in_DestinationPath 引数に Empty を指定したときの、コピー先の基準
Copy メソッド
← ▼ ▲
CopyWindowClass
進捗ウィンドウを表示しながらファイルをコピーします。
複数のファイルを並行してコピーします。
Set copies = new CopyWindowClass
copies.CopyAndRenameStart "large-1.bin", "_work\large-1-copy.bin"
copies.CopyAndRenameStart "large-2.bin", "_work\large-2-copy.bin"
copies.WaitUntilCompletion
サンプル
CopyAndRenameStart
WaitUntilCompletion
テスト
ソース
→ T_CopyEx.vbs
T_CopyWindowClass
→ Network.vbs
参考
→ Folder::CopyHere
→ CopyWithProcessDialog.vbs
← ▼ ▲
CopyAndRenameStart (CopyWindowClass)
Sub CopyWindowClass::CopyAndRenameStart( in_SourceFilePath as string,
in_DestinationFilePath as string )
ファイルのコピーを開始します。
【引数】
in_SourceFilePath
in_DestinationFilePath
コピー元のファイルのパス
コピー先のファイルのパス
<< CopyWindowClass
コピーを開始したらすぐに関数から返ります。
連続して呼び出すと、並行してコピーを行います。
スクリプトを中断しても、コピーは継続します。 進捗ウィンドウの中断ボタンを押してください。
再起動したスクリプト（プロセス）で同じコピーをする前に中断してください。
NewWritable (AppKeyClass)
なぜ、コピー中のフォルダー名に ".updating" があるのかの理由は、
する必要がないからです。
テンポラリ フォルダー
があるドライブと異なるドライブに in_DestinationFilePath が指定されても in_DestinationFilePath
にコピーしたファイルを移動できる（高速で処理できる）からです。
にしない理由は、テンポラリ フォルダー
in_DestinationFilePath +".updating"
in_DestinationFilePath
コピー中
フォルダーが存在
なし、またはファイルが存在
コピー完了
ファイルが存在
なし
コピー中かどうかは、下記のパスにファイルやフォルダーが存在するかどうかで判断する
ことができます。
コピー前かどうかを判断するときは、
DestinationFullPath (CopyWindowClass)
にあるかどうかで判断できます。 なければ前です。 中断された後で CopyWindowClass を
生成した後のコピー前でも同じ方法で判断できます。
コピー前
なし、またはファイルが存在
なし、またはフォルダーが存在
← ▼ ▲
WaitUntilCompletion (CopyWindowClass)
Sub CopyWindowClass::WaitUntilCompletion()
コピーが完了するまで待ちます。
<< CopyWindowClass
デストラクターからも呼ばれます。
← ▼ ▲
DestinationFullPath (CopyWindowClass)
Dim CopyWindowClass::Processes(i).DestinationFullPath as string
コピー中、または、コピーしたファイルのパス。 ローカルのパス。
<< CopyWindowClass
Wait
を呼び出した後は、CopyWindowClass::Processes 配列の要素は無くなります。
← ▼ ▲
cat
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
← ▼ ▲
CopyNotOverwriteFileClass
(src)
Set o = new CopyNotOverwriteFileClass
o.SourcePath = "work\Source"
o.DestinationPath = "work\Destination"
o.SynchronizedPath = "work\Synchronized"
o.Copy
サンプル
フォルダーをコピーします。
ただし、コピー先のファイルが前回コピーした内容と異なるファイルはコピーしないで、
SyncFilesMenu
メニューに一覧します。 メニューを閉じるまで、Copy メソッドから戻りません。
Copy の代わりに CopyForce を呼び出すと、メニューを表示しないで、強制上書きします。
→ DeleteSameFileClass
関連
.SourcePath は、コピー元のフォルダーのパス。
.DestinationPath は、コピー先のフォルダーのパス。
.SynchronizedPath は、.DestinationPath にコピーしたファイルのコピーが入ります。
.SynchronizedPath にあるファイルと .DestinationPath にあるファイルの内容が異なれば、
.DestinationPath にあるファイルが修正されたと判断されます。
テスト
→ T_CopyDelNotOver フォルダ
コピー先にのみ存在するファイルは、存在し続けます。
→ CommitCopy
← ▼ ▲
ReplaceShortcutFilesToFiles
Sub ReplaceShortcutFilesToFiles( FolderPath as string, Option_ as Empty )
ショートカット・ファイルを通常のファイルに変換します。
【引数】
FolderPath
Option_
変換するフォルダーのパス
Empty を指定してください
→ ReplaceShortcutFilesToFiles コマンド
関連
サブ フォルダーを含めて変換します。
ソース
→ vbslib.vbs
→ CreateShortcut (Shell)
← ▼ ▲
CopyFunction 型、コピー関数型
→ CompareFunction 型、比較関数型
Function CopyFunction( in_SourcePath as string, in_DestinationPath as string, ref_Option as variant )
as variant
コピーまたは移動をする関数の型。 関数名は、CopyFunction とは限りません。
【引数】
in_SourcePath
in_DestinationPath
コピー元のアドレスやパス
コピー先のアドレスやパス
ref_Option
ユーザー定義、または、コール元定義
返り値
コール元定義
Function SampleStaticClass_copy( in_SourcePath, in_DestinationPath, ref_Option )
copy_ren in_SourcePath, in_DestinationPath
End Function
Set a_copy = GetRef( "SampleStaticClass_copy" )
サンプル
関連
→ CallForEach_copy
copy_ren
パスが相対パスで渡されたとき、その基準パスはカレント フォルダーです。
→ CopyFolder (OpenForDefragmentClass)
← ▼ ▲
その他
→ ConvertToFullPath
テキストファイルの中の相対パスをフル・パスに変換してコピーします。
→ OpenForReplace
テキストファイルの内容を変更します。
ファイルを安全に更新します。
→ CreateShortcut
ショートカットを作成します。
→ CallForEach_copy
複数のファイルをファイルコピーです。
→ MakeFileClass
ファイルのタイムスタンプを比較して、必要ならコマンドを実行します。
→ SafeFileUpdateEx
→ CopyDiffByMD5List
MD5リストから、ファイルやフォルダーを差分コピーします。
← ▼ ▲
move
SrcPath のファイルまたはフォルダを、DstFolderPath フォルダーの中に移動します。
Sub move( SrcPath as string, DstFolderPath as string )
【引数】
SrcPath
DstFolderPath
移動元のファイルパス、またはフォルダーパス
移動先のフォルダーパス （ファイルパスは不可）
→ copy
(src)
move "data", "do_test"
move "src\*", "src_copy"
src フォルダの内容を src_copy フォルダに移動します
data フォルダを do_test フォルダの中に移動します
参考
テスト
移動先にファイルやフォルダーがあるときは、上書き確認しないで、上書きします。
移動先のフォルダーにあるファイルが、移動元に無くても残ります。
→ T_Copy.vbs
T_Move2
ファイル：
vbslib.vbs
サンプル
関連
→ ReplaceFileNameWildcard
→ move_ren
→ SafeFileUpdate
T_Move
← ▼ ▲
move_ren
Sub move_ren( SrcPath as string, DstPath as string )
ファイルまたはフォルダーの名前を変えて移動します。
【引数】
SrcPath
DstPath
コピー元のパス
コピー先のパス
SrcPath がファイルなら、DstPath に指定したパスもファイルにしてください。
SrcPath がフォルダなら、DstPath に指定したパスもフォルダにしてください。
(src)
移動先にファイルやフォルダーがあるときは、上書き確認しないで、上書きします。
移動先のフォルダーにあるファイルが、移動元に無くても残ります。 (Ver 5.00以降)
移動先のフォルダーにあるファイルが、移動元に無いときは、そのファイルは削除されます。 (Ver 5.00より前)
関連
→ move
→ ren
テスト
→ T_Copy.vbs
T_Move
T_Move2
→ vbslib.vbs
ソース
← ▼ ▲
unzip
Sub unzip( Src as string, Dst as string, Opt as integer )
圧縮 (zip形式) フォルダーを解凍します。
(src)
c.IgnoreIfExist
解凍する前にフォルダを削除します
すでにフォルダーが存在し、zip の内容と異なるときはエラーにします
すでにフォルダーが存在していたら何もしません
すでにフォルダーが存在していたらエラーにします
Opt 引数
整数型のときは、ビットフィールドの Flags です。 なお、c = g_VBS_Lib です。
sample1
sample1.zip
file1.txt
file1.txt
sample1.zip
sample1
[ 送る |
圧縮(zip)フォルダ ]
フォルダを右クリック
Compressed Folders ]
ダブルクリックで開かないときは、右クリック [ プログラムから開く |
上記 sample1.zip は、次のように作成します。
Opt
sample1.zip をエクスプローラで開くと、次のようになります。
サンプル１
unzip "sample1.zip", "sample1", F_AfterDelete
カレントフォルダー
file1.txt （新規作成）
sample1 （新規作成）
file1.txt
sample1
sample1.zip
unzip "sample1.zip", "C:\folderA\sample1", F_AfterDelete
sample1
file1.txt
folderA
C:\
サンプル２
sample1
file1.txt
sample1.zip
C:\folderA\
→ env
環境変数を指定する
【引数】
Src
Dst
コピー元 = 圧縮 (zip形式) フォルダー（= zip ファイル）のパス
コピー先 = 解凍してできるフォルダーのパス
Opt
Emtpy または、オプション・フラグ
ダウンロードした zip ファイルを解凍するために、vbslib の unzip を使わないでください。
不正な zip ファイルに対するテストをしていません。
Windows のエクスプローラーなどから展開してください。
→ ファイル名、パス (Windows)
参考
→ Out of Writable 警告 [E_OutOfWritable]
→ Opt 引数
相対パス指定
フル・パス指定、インストール向け
解凍
sample1
sample1
→ SpecialFolders (Shell)
特殊フォルダを指定する
関連
ファイル：
zip.vbs
→ zip 圧縮展開
→ T_Zip.vbs # [T_unzip]
テスト
関連
→ unzip2
c.AfterDelete
c.ErrorIfExist
zip ファイルの中のルートに１つのフォルダーだけがあるときは、そのフォルダーの中を
展開します。
→ unzip コマンド
ソース
→ zip.vbs
boolean 型のときは、次のとおりです。
True
False
F_AfterDelete と同じ。 解凍する前にフォルダを削除します
F_IfNotExist と同じ。 すでにフォルダが存在していたら何もしません
c.CheckSameIfExist
→ Setting_get7zExePath
→ DownloadAndExtractFileIn7zClass
← ▼ ▲
zip 圧縮展開
→ unzip2
zip ファイルを解凍します。
scriptlib
ファイル構成
リファレンス
圧縮 (zip形式) フォルダーを解凍します。
Setting_getIncludePathes = Array(_
:
"zip\zip.vbs",_
setting
vbs_inc_setting.vbs
zip\unzip2.exe の内部で使っている zlib について
→ scriptlib\zip\zip_readme.txt
zip_readme.txt
zip
zip 形式の圧縮ファイルを扱います。
ダウンロードした zip ファイルを解凍するために、vbslib の unzip を使わないでください。
不正な zip ファイルに対するテストをしていません。
Windows のエクスプローラーなどから展開してください。
→ unzip
vbslib
zip.vbs
← ▼ ▲
unzip2
Sub unzip2( ZipPath as string, ExtractFolderPath as string )
zip ファイルを解凍します。 解凍先フォルダーを指定できます。
【引数】
ZipPath
ExtractFolderPath
zip ファイルのパス
解凍先フォルダーのパス
(src)
unzip2 "sample1.zip", "C:\folderA"
sample1
file1.txt
folderA
C:\
サンプル
sample1
file1.txt
sample1.zip
C:\folderA
file2.txt
file2.txt
sample1.zip
ExtractFolderPath のフォルダーの中に、フォルダーができるかどうかは、
zip ファイルの内容によります。 zip ファイルの中のルートに zip ファイルと
同じ名前のフォルダーがあるときは、そのフォルダーの中を展開します。
→ T_Zip.vbs # [T_unzip2]
テスト
関連
→ unzip
ファイル：
zip.vbs
→ zip, unzip.exe
← ▼ ▲
zip2
Sub zip2( ZipPath as string, SourceFolderPath as string, IsFolderName as boolean )
フォルダーを圧縮して、zip ファイルを作成します。
【引数】
ZipPath
SourceFolderPathObj
zip ファイルのパス
圧縮するフォルダーのパス
IsFolderName
zip ファイルの中に、ZipPath に指定したフォルダー名を入れるかどうか
関連
テスト
ソース
→ zip.vbs
→ zlib (clib)
→ T_Zip.vbs
T_zip2
← ▼ ▲
DownloadAndExtractFileIn7zClass
圧縮ファイルをコピー（ダウンロード）してから、解凍したファイルのパスを返します。
コピーは、複数のファイルで並行して行われるようにもできます。
Set downloader = new DownloadAndExtractFileIn7zClass
paths_in_server = Array( "Server\FileA.txt", "Server\FileB.txt" )
'// 複数のファイルで並行してコピーします。
For Each path In paths_in_server
downloader.DownloadStart path
Next
'// 展開したファイルのパスを取得します。
path_in_local = downloader.GetLocalPath( path(0) )
Assert path = "Temporary\Fragments\8f\8f97b7e131a6d059a17cb42b988c9101\FileA.txt"
path_in_local = downloader.GetLocalPath( path(1) )
Assert path = "Temporary\Fragments\4b\4b46a773b6b3582891edbed39bdc2974\FileA.txt"
サンプル
関連
→ CopyFolder (OpenForDefragmentClass)
圧縮ファイル _Fragment.7z があるときは、圧縮ファイルを
テンポラリ フォルダー
の中の Fragments
8f97b7e131a6d059a17cb42b988c9101.7z
フォルダーに一旦コピーしてから解凍します。 これは、コピー元がネットワークや DVD-ROM など
アクセスが遅いときに高速に処理するためです。 テンポラリ フォルダーは、キャッシュの役割をします。
コピー元の圧縮ファイルの名前は、_Fragment.7z 固定です。
8f97b7e131a6d059a17cb42b988c9101
8f
FileA.txt
FileB.txt
テンポラリ フォルダー
ファイル名は、7z ファイルの MD5
ファイル名は、コピー元の
フォルダーのパスの MD5。
つまり、文字列 "Server"
の MD5。
7eb5bc036d02ec0e8a401aa7ea1192af-Fragment-7z.txt
内容は、_Fragment.7z と同じ
内容は、_Fragment.7z の MD5、つまり、
8f97b7e131a6d059a17cb42b988c9101
7e
FileA.txt
_Fragment.7z
Server
FileB.txt
コピー
解凍
ファイル名は、圧縮ファイルの
MD5
に改名され、MD5 の先頭 2文字のフォルダーに格納され
ます。 また、解凍した内容が入ったフォルダーも作られます。 そのフォルダー名は、圧縮ファイルの
名前と同じ MD5 です。 すでに圧縮ファイルがあるときは、テンポラリ フォルダーにコピーする処理は
スキップされ、早く次の処理に進みます。
← in_PathIn7zInServer 引数が指すファイル
← 返り値が指すファイル
\Fragments
→ 7-Zip
コールツリー
(.vbs)
(.vbs)
CopyWindowClass::Dispatch
downloader.GetLocalPath
(.vbs)
downloader.DownloadStart
(.vbs)
T_DownloadAndExtractFileIn7z
Me.DownloadThreads.Add
CopyWindowClass::CopyAndRenameStart
(.vbs)
downloader.Dispatch
→ T_Zip.vbs
T_DownloadAndExtractFileIn7z
テスト
→ zip.vbs
ソース
引数に指定するパスは、圧縮ファイルを展開したときにできるパスです。
←
↓