1つまたは複数のファイルをコピーします。
FileCopy SourcePattern, DestPattern , Overwrite
型:文字列
単一のファイルまたはフォルダの名前、または"C:\Temp\*.tmp"のようなワイルドカードパターンです。SourcePatternは、絶対パスが指定されない場合、A_WorkingDirにあるとみなされます。
アスタリスク(*)とクエスチョンマーク(?)は、ワイルドカードとして使用できます。*は0以上の文字と、クエスチョンマークは?1文字とマッチします。使用例:
*.*と*は、全てのファイルにマッチします。*.htmは、.htmや.htmlなどの拡張子を持つファイルにマッチします。*.は、拡張子がないファイルにマッチします。log?.txtは、例えばlog1.txtにはマッチしますが、log10.txtにはマッチしません。*report*は、ファイル名に"report"を含むあらゆるファイルにマッチします。型:文字列
絶対パスが指定されていない場合は、A_WorkingDirにあると仮定される、保存先の名前またはパターン。
この場合、ファイル名の最初のアスタリスク(*)は、拡張子を除いたソースファイル名に置き換えられ、最後のフルストップ(.)以降の最初のアスタリスクは、ソースファイルの拡張子に置き換えられます。アスタリスクがあっても拡張子が省略された場合は、ソースファイルの拡張子が使用されます。
既存のファイル名を残したまま単純にコピーする場合は、以下の例のようにフォルダ名のみを指定します:
FileCopy "C:\*.txt", "C:\My Folder"
FileCopy "C:\*.txt", "C:\My Folder\*.*"
保存先ディレクトリはすでに存在している必要があります。My Folderが存在しない場合、上記の最初の例ではターゲットファイル名として「My Folder」が使用され、2番目の例ではファイルはコピーされません。
Type: Integer
省略したときの初期値は0です。Otherwise, specify one of the following numbers to indicate whether to overwrite files if they already exist:
0:既存ファイルを上書きしません。DestPatternがすでにファイルまたはディレクトリとして存在する場合、操作は失敗し、何の効果もありません。
1:既存ファイルを上書きします。ただし、DestPattern内のファイルやサブフォルダで、SourcePatternに対応するものがないものは削除されません。
その他の値は、将来の使用のために予約されています。
ファイルのコピーに失敗した場合、Errorがスローされ、Extraプロパティには失敗の回数が設定されます。ファイルが見つからなかった場合、SourcePatternにワイルドカード*と?がない場合のみ、エラーが発生します。つまり、"*.txt"のようなワイルドカードパターンのコピーは、どのファイルにもマッチしない場合に成功したとみなされます。
FileMoveと異なり、ファイルを自分自身にコピーすることは、上書きモードが有効であっても、常にエラーとしてカウントされます。
ファイルが見つかった場合、A_LastErrorには0(ゼロ)または最後の失敗の直後のオペレーティングシステムのGetLastError()関数の結果が設定されます。それ以外の場合、A_LastError は、ファイルが見つからなかった理由を示す可能性のあるエラーコードを含みます。
FileCopyは、ファイルのみをコピーします。フォルダの内容(すべてのファイルとサブフォルダ)をコピーする代わりに、以下の例のセクションをご覧ください。1つのフォルダ(サブフォルダを含む)をコピーする場合は、DirCopyを使用します。
エラーが発生しても、操作は続行されます。
FileMove、DirCopy、DirMove、FileDelete
フォルダ内のすべてのファイルやフォルダを別のフォルダにコピーします。
ErrorCount := CopyFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
if ErrorCount != 0
MsgBox ErrorCount " files/folders could not be copied."
CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite := false)
; SourcePatternに一致するすべてのファイルとフォルダをDestinationFolderという名前のフォルダにコピーします。
; コピーできなかったファイル/フォルダの数を返す。
{
ErrorCount := 0
; まず、すべてのファイルをコピーします(フォルダーはコピーしません):
try
FileCopy SourcePattern, DestinationFolder, DoOverwrite
catch as Err
ErrorCount := Err.Extra
; 今度は、すべてのフォルダをコピーします:
Loop Files, SourcePattern, "D" ; Dは「フォルダだけを取り出す」という意味です。
{
try
DirCopy A_LoopFilePath, DestinationFolder "\" A_LoopFileName, DoOverwrite
catch
{
ErrorCount += 1
; 各問題フォルダを名前で報告します。
MsgBox "Could not copy " A_LoopFilePath " into " DestinationFolder
}
}
return ErrorCount
}