VBScriptでは「FileSystemObject」を使用することで様々なファイル操作を行えます。
ここでは、フォルダをコピーする方法を解説します。
構文
CopyFolderメソッドの書式になります。
Object.CopyFolder(source, destination, [overwrite])
ファイルシステムオブジェクト.CopyFolder(コピー元のフォルダ, コピー先のフォルダ, 上書き可否)
引数 | 内容 | 省略 |
---|---|---|
コピー元のフォルダ(source) | コピーするフォルダ。ワイルドカードも使用可能 | 不可 |
コピー先のフォルダ(destination) | コピー先 | 不可 |
上書き可否(overwrite) | 既存のフォルダーが存在する場合に上書きするかどうか True:上書きする(既定値) False:上書きしない | 可能 |
使用例
シンプルなコピー
一番単純にフォルダをコピーする例になります。
スクリプト
Option Explicit ' 宣言 Dim fso, fromPath, toPath ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' コピー元のパス fromPath = "C:\workspace\VBScript\folder1\subFolder" ' コピー先のパス toPath = "C:\workspace\VBScript\folder2\" ' フォルダのコピー fso.CopyFolder fromPath, toPath
解説
このスクリプトを実行すると、
変数[fromPath]に設定した「C:\workspace\VBScript\folder1\subFolder」が、
変数[toPath]に設定した「C:\workspace\VBScript\folder2\」配下にコピーされます。
コピーを行う前後でフォルダ(ファイル)は下記のようになります。
コピー元の「folder1」は変わらず、コピー先の「folder2」配下に「folder1」配下にあった「subFolder」がコピーされていることが分かります。
フォルダ名をリネームしつつコピー
フォルダ名をリネームしつつコピーする例です。
スクリプト
Option Explicit ' 宣言 Dim fso, fromPath, toPath ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' コピー元のパス fromPath = "C:\workspace\VBScript\folder1" ' コピー先のパス toPath = "C:\workspace\VBScript\folder2" ' フォルダのコピー fso.CopyFolder fromPath, toPath
解説
このスクリプトを実行すると、
変数[fromPath]に設定した「C:\workspace\VBScript\folder1」が、
変数[toPath]に設定した「C:\workspace\VBScript\folder2」にリネームされてコピーされます。
コピーを行う前後でフォルダ(ファイル)は下記のようになります。
コピー元の「folder1」は変わらず、元々存在しなかった「folder2」が作成されて、その中は「folder1」と同じになっていることが分かります。
ワイルドカードを使用してコピー
コピー元のフォルダ名をワイルドカードで指定しつつコピーする例です。
スクリプト
Option Explicit ' 宣言 Dim fso, fromPath, toPath ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' コピー元のパス fromPath = "C:\workspace\VBScript\folder1\subFolder_*" ' コピー先のパス toPath = "C:\workspace\VBScript\folder2\" ' フォルダのコピー fso.CopyFolder fromPath, toPath
解説
このスクリプトを実行すると、
変数[fromPath]に設定した「C:\workspace\VBScript\folder1」配下にある「subFolder_*」(フォルダ名の先頭が[subFolder_]となっているフォルダ)が、変数[toPath]に設定した「C:\workspace\VBScript\folder2\」配下にコピーされます。
コピーを行う前後でフォルダ(ファイル)は下記のようになります。
コピー元の「folder1」は変わらず、「folder1」の中にある「subFolder_」から始まるフォルダのみが「folder2」配下にコピーされていることが分かります。
上書き可否にFalseを指定してコピー
第三引数の上書き可否に「False」を設定してコピーする例です。
(第三引数に「False」を指定すると、上書き禁止となります。)
スクリプト
Option Explicit ' 宣言 Dim fso, fromPath, toPath ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' コピー元のパス fromPath = "C:\workspace\VBScript\folder1" ' コピー先のパス toPath = "C:\workspace\VBScript\folder2" ' フォルダのコピー fso.CopyFolder fromPath, toPath, False
解説
このスクリプトを実行すると、
変数[fromPath]に設定した「C:\workspace\VBScript\folder1」が、
変数[toPath]に設定した「C:\workspace\VBScript\folder2」にリネームされてコピーされます。
このサンプルでは、第三引数が「False」となっており、上書き禁止です。
なので、2回目の実行時には、「既に同名のファイルが存在しています。」とエラーが表示されます。
コピーを行う前後でフォルダ(ファイル)は下記のようになります。
コピー元の「folder1」は変わらず、元々存在しなかった「folder2」が作成されて、その中は「folder1」と同じになっていることが分かります。
コメント