# FileCopy

复制一个或多个文件。

FileCopy, SourcePattern, DestPattern [, Flag]

#### 参数

SourcePattern | 一个单独文件或文件夹的名称, 或是通配符样式，如 C:\Temp\*.tmp 。如果没有定义绝对路径，则假定 SourcePattern 是在 %A_WorkingDir% 。
DestPattern | 目标的名称或通配符样式，如果没有定义绝对路径，则假定 SourcePattern 是在 %A_WorkingDir%。 执行一个简单的复制 -- 保留已存在文件名称 -- 仅指定文件夹名称像那些功能相同的例子显示的那样： FileCopy, C:\*.txt, C:\My Folder FileCopy, C:\*.txt, C:\My Folder\*.*
Flag | (可选参数) 此 flag(标志) 决定是否覆盖已存在的文件： 0 = (默认) 不覆盖已存在的文件 1 = 覆盖已存在的文件 此参数可为 expression(表 达式)，甚至可以取值为 true 或 false (因为在内部 true 和 false 以 1 和 0 表示)。

#### ErrorLevel

ErrorLevel 将设置为由于错误而无法复制的文件数，或相反为 0 。如果无法复制任何文件，则 AutoIt v2 (.aut) 脚本会将 ErrorLevel 设为 1。

另外一种情况，如果源文件是一个单独的文件(无通配符)并且文件不存在，ErrorLevel 将设为 0 。要侦测这种情况，在复制源文件前对它使用 IfExist 或 FileExist() 。

与 FileMove 不同的是，复制文件覆盖自己通常会导致错误，即使打开了覆盖模式。

#### 注意

FileCopy 只能复制文件。而要复制文件夹中的所有内容(所有文件和子文件夹)，参看下面的示例。要复制一个单独的文件夹(包括它的子文件夹)，使用 FileCopyDir 。

即使错误发生，操作也会继续。

#### 相关命令

FileMove, FileCopyDir, FileMoveDir, FileDelete

#### 示例

    FileCopy, C:\My Documents\List1.txt, D:\Main Backup\ ; 复制且保留原始文件名。
    FileCopy, C:\My File.txt, C:\My File New.txt ; 通过提供一个新的名字来复制文件到同个文件夹中。
    FileCopy, C:\Folder1\*.txt, D:\New Folder\*.bkp ; 复制到新的位置并改变扩展名。

    ; 下面的例子复制一个文件夹下的所有文件和文件夹到一个不同的文件夹中：
    ErrorCount := CopyFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
    if ErrorCount <> 0
    MsgBox %ErrorCount% 个文件/文件夹不能被复制。
    CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
    ; 复制匹配 SourcePattern 的所有文件和文件夹到名为 DestinationFolder 的文件夹
    ; 并返回不能被复制的文件/文件夹的数量。
    {
    ; 首先复制所有的文件(非文件夹)：
    FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
    ErrorCount := ErrorLevel
    ; 现在复制所有的文件夹：
    Loop, %SourcePattern%, 2 ; 2 表示“只获取文件夹”。
    {
    FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
    ErrorCount += ErrorLevel
    if ErrorLevel ; 报告每一个有问题的文件夹名称.
    MsgBox 不能复制 %A_LoopFileFullPath% 到 %DestinationFolder%.
    }
    return ErrorCount
    }

翻译：Xiangee 修正：天堂之门 menk33@163.com 2008年8月7日