Copies one or more files.
FileCopy, SourcePattern, DestPattern , Overwrite
The name of a single file or folder, or a wildcard pattern such as C:\Temp\*.tmp. SourcePattern is assumed to be in %A_WorkingDir% if an absolute path isn't specified.
The name or pattern of the destination, which is assumed to be in %A_WorkingDir% if an absolute path isn't specified.
If present, the first asterisk (*
) in the filename is replaced with the source filename excluding its extension, while the first asterisk after the last full stop (.
) is replaced with the source file's extension. If an asterisk is present but the extension is omitted, the source file's extension is used.
To perform a simple copy -- retaining the existing file name(s) -- specify only the folder name as shown in these mostly equivalent examples:
FileCopy, C:\*.txt, C:\My Folder
FileCopy, C:\*.txt, C:\My Folder\*.*
The destination directory must already exist. If My Folder does not exist, the first example above will use "My Folder" as the target filename, while the second example will copy no files.
This parameter determines whether to overwrite files if they already exist. If this parameter is 1 (true), the command overwrites existing files. If omitted or 0 (false), the command does not overwrite existing files.
This parameter can be an expression, even one that evalutes to true or false (since true and false are stored internally as 1 and 0).
[v1.1.04+]: This command is able to throw an exception on failure. For more information, see Runtime Errors.
ErrorLevel is set to the number of files that could not be copied due to an error, or 0 otherwise.
In either case, if the source file is a single file (no wildcards) and it does not exist, ErrorLevel is set to 0. To detect this condition, use FileExist() or IfExist on the source file prior to copying it.
Unlike FileMove, copying a file onto itself is always counted as an error, even if the overwrite mode is in effect.
If files were found, A_LastError is set to 0 (zero) or the result of the operating system's GetLastError() function immediately after the last failure. Otherwise A_LastError contains an error code that might indicate why no files were found.
FileCopy copies files only. To instead copy the contents of a folder (all its files and subfolders), see the examples section below. To copy a single folder (including its subfolders), use FileCopyDir.
The operation will continue even if error(s) are encountered.
FileMove, FileCopyDir, FileMoveDir, FileDelete
Copies a file into the same directory by providing a new name.
FileCopy, C:\My File.txt, C:\My File New.txt
Copies text files to a new location and gives them a new extension.
FileCopy, C:\Folder1\*.txt, D:\New Folder\*.bkp
Copies all files and folders inside a folder to a different folder.
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) ; Copies all files and folders matching SourcePattern into the folder named DestinationFolder and ; returns the number of files/folders that could not be copied. { ; First copy all the files (but not the folders): FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite% ErrorCount := ErrorLevel ; Now copy all the folders: Loop, %SourcePattern%, 2 ; 2 means "retrieve folders only". { FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite% ErrorCount += ErrorLevel if ErrorLevel ; Report each problem folder by name. MsgBox Could not copy %A_LoopFileFullPath% into %DestinationFolder%. } return ErrorCount }