(for Internet Explorer)
→ 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"
in_PathWithID 引数に
を指定することもできます。 その場合、最初の 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 タグの名前は変更できます。
で定義した ${ } 変数は、path, default_source_path, default_destination_path
属性から参照できます。
default_source_path, default_destination_path 属性は、
の引数に Empty を指定したときに使われます。
Example
PickUpCopies.xml
スクリプト
OpenPickUpCopy 関数が返した OpenPickUpCopyClass のオブジェクトの
を呼び出しています。
PickUpCopy.xml ファイルに書かれた設定に従って、Folder1 フォルダーの一部から
OutputFolder フォルダーへコピーします。
コールツリー
OpenPickUpCopyClass::Copy
 (.vbs)
 (.vbs)
PathDictionaryClass_onRegExp
new_PathDictionaryClass_fromXML_Ex
 (.vbs)
 (.vbs)
LazyDictionaryClass::Me_Expand
 (.vbs)
 (.vbs)
 (.vbs)
LazyDictionaryClass::Me_Call
 (.vbs)
PathDictionaryClass::Scan
 (.vbs)
 (.vbs)
'// ソート「ファイル > \ あり * > \ なし * (拡張子のデフォルト) > フォルダー」
// 正規表現を展開する。
// ファイルを一覧する。
copy_ren
// コピーする。
path 属性に ${RegExp( ... )} を記述すれば、
で複数のファイルを指定できます。
OpenPickUpCopy
 (.vbs)
の返り値のクラス。
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 を指定してください
フォルダーのパスを返します。
フル パスが返ります。
XML の default_source_path 属性に指定した ${ } 変数が展開された値が返ります。
Function  GetDefaultSourcePath() as string
コピー元の基準フォルダーのパスを返します。
の in_SourcePath 引数に Empty を指定したときの、コピー元の基準
フォルダーのパスを返します。
フル パスが返ります。
XML の default_destination_path 属性に指定した ${ } 変数が展開された値が返ります。
XML の default_destination_path 属性に指定した ${SourceFolderName} は、
コピー元の基準フォルダーのパスに展開された値が返ります。
Function  GetDefaultDestinationPath( in_SourcePath  as string ) as string
コピー先の基準フォルダーのパスを返します。
【引数】
in_SourcePath
コピー元の基準フォルダーのパス、または、Empty
返り値
コピー先の基準フォルダーのパス
の in_DestinationPath 引数に Empty を指定したときの、コピー先の基準
進捗ウィンドウを表示しながらファイルをコピーします。
複数のファイルを並行してコピーします。
    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
サンプル
テスト
ソース
→ T_CopyEx.vbs
T_CopyWindowClass
→ Network.vbs
参考
→ CopyWithProcessDialog.vbs
Sub  CopyWindowClass::CopyAndRenameStart( in_SourceFilePath as string, 
    in_DestinationFilePath as string )
ファイルのコピーを開始します。
【引数】
in_SourceFilePath
in_DestinationFilePath
コピー元のファイルのパス
コピー先のファイルのパス
コピーを開始したらすぐに関数から返ります。
連続して呼び出すと、並行してコピーを行います。
スクリプトを中断しても、コピーは継続します。 進捗ウィンドウの中断ボタンを押してください。
再起動したスクリプト(プロセス)で同じコピーをする前に中断してください。
なぜ、コピー中のフォルダー名に ".updating" があるのかの理由は、
する必要がないからです。
があるドライブと異なるドライブに in_DestinationFilePath が指定されても in_DestinationFilePath
にコピーしたファイルを移動できる(高速で処理できる)からです。
にしない理由は、テンポラリ フォルダー
in_DestinationFilePath +".updating"
in_DestinationFilePath
コピー中
フォルダーが存在
なし、またはファイルが存在
コピー完了
ファイルが存在
なし
コピー中かどうかは、下記のパスにファイルやフォルダーが存在するかどうかで判断する
ことができます。
コピー前かどうかを判断するときは、
にあるかどうかで判断できます。 なければ前です。 中断された後で CopyWindowClass を
生成した後のコピー前でも同じ方法で判断できます。
コピー前
なし、またはファイルが存在
なし、またはフォルダーが存在
Sub  CopyWindowClass::WaitUntilCompletion()
コピーが完了するまで待ちます。
デストラクターからも呼ばれます。
Dim  CopyWindowClass::Processes(i).DestinationFullPath  as string
コピー中、または、コピーしたファイルのパス。 ローカルのパス。
を呼び出した後は、CopyWindowClass::Processes 配列の要素は無くなります。
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 フォルダ
コピー先にのみ存在するファイルは、存在し続けます。
Sub  ReplaceShortcutFilesToFiles( FolderPath as string, Option_ as Empty )
ショートカット・ファイルを通常のファイルに変換します。
【引数】
FolderPath
Option_
変換するフォルダーのパス
Empty を指定してください
関連
サブ フォルダーを含めて変換します。
ソース
→ vbslib.vbs
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" )
サンプル
関連
パスが相対パスで渡されたとき、その基準パスはカレント フォルダーです。
その他
テキストファイルの中の相対パスをフル・パスに変換してコピーします。
テキストファイルの内容を変更します。
ファイルを安全に更新します。
ショートカットを作成します。
複数のファイルをファイルコピーです。
ファイルのタイムスタンプを比較して、必要ならコマンドを実行します。
MD5リストから、ファイルやフォルダーを差分コピーします。
SrcPath のファイルまたはフォルダを、DstFolderPath フォルダーの中に移動します。
Sub  move( SrcPath as string, DstFolderPath as string )
【引数】
SrcPath
DstFolderPath
移動元のファイルパス、またはフォルダーパス
移動先のフォルダーパス (ファイルパスは不可)
(src)
move  "data", "do_test"
move  "src\*", "src_copy"
src フォルダの内容を src_copy フォルダに移動します
data フォルダを do_test フォルダの中に移動します
参考
テスト
移動先にファイルやフォルダーがあるときは、上書き確認しないで、上書きします。
移動先のフォルダーにあるファイルが、移動元に無くても残ります。
→ T_Copy.vbs
T_Move2
ファイル:
vbslib.vbs
サンプル
関連
T_Move
Sub  move_ren( SrcPath as string, DstPath as string )
ファイルまたはフォルダーの名前を変えて移動します。
【引数】
SrcPath
DstPath
コピー元のパス
コピー先のパス
SrcPath がファイルなら、DstPath に指定したパスもファイルにしてください。
SrcPath がフォルダなら、DstPath に指定したパスもフォルダにしてください。
(src)
移動先にファイルやフォルダーがあるときは、上書き確認しないで、上書きします。
移動先のフォルダーにあるファイルが、移動元に無くても残ります。 (Ver 5.00以降)
移動先のフォルダーにあるファイルが、移動元に無いときは、そのファイルは削除されます。 (Ver 5.00より前)
関連
テスト
→ T_Copy.vbs
T_Move
T_Move2
→ vbslib.vbs
ソース
Sub  unzip( Src as string, Dst as string, Opt as integer )
圧縮 (zip形式) フォルダーを解凍します。
(src)
解凍する前にフォルダを削除します
すでにフォルダーが存在し、zip の内容と異なるときはエラーにします
すでにフォルダーが存在していたら何もしません
すでにフォルダーが存在していたらエラーにします
整数型のときは、ビットフィールドの Flags です。 なお、c = g_VBS_Lib です。
sample1
sample1.zip
file1.txt
file1.txt
sample1.zip
sample1
[ 送る |
圧縮(zip)フォルダ ]
フォルダを右クリック
Compressed Folders ]
ダブルクリックで開かないときは、右クリック [ プログラムから開く |
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\
環境変数を指定する
【引数】
Src
Dst
コピー元 = 圧縮 (zip形式) フォルダー(= zip ファイル)のパス
コピー先 = 解凍してできるフォルダーのパス
Opt
Emtpy または、オプション・フラグ
ダウンロードした zip ファイルを解凍するために、vbslib の unzip を使わないでください。
不正な zip ファイルに対するテストをしていません。
Windows のエクスプローラーなどから展開してください。
参考
相対パス指定
フル・パス指定、インストール向け
解凍
sample1
sample1
特殊フォルダを指定する
関連
ファイル:
zip.vbs
→ T_Zip.vbs # [T_unzip]
テスト
関連
zip ファイルの中のルートに1つのフォルダーだけがあるときは、そのフォルダーの中を
展開します。
ソース
→ zip.vbs
boolean 型のときは、次のとおりです。
True
False
F_AfterDelete と同じ。 解凍する前にフォルダを削除します
F_IfNotExist と同じ。 すでにフォルダが存在していたら何もしません
c.CheckSameIfExist
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 のエクスプローラーなどから展開してください。
vbslib
zip.vbs
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]
テスト
関連
ファイル:
zip.vbs
→ zip, unzip.exe
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
圧縮ファイルをコピー(ダウンロード)してから、解凍したファイルのパスを返します。
コピーは、複数のファイルで並行して行われるようにもできます。
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"
サンプル
関連
圧縮ファイル _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 の先頭 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
ソース
引数に指定するパスは、圧縮ファイルを展開したときにできるパスです。