FileMove

Moves or renames one or more files.

FileMove SourcePattern, DestPattern , Flag

Parameters

SourcePattern

The name of a single file or a wildcard pattern such as C:\Temp\*.tmp. SourcePattern is assumed to be in A_WorkingDir if an absolute path isn't specified.

DestPattern

The name or pattern of the destination, which is assumed to be in A_WorkingDir if an absolute path isn't specified. To perform a simple move -- retaining the existing file name(s) -- specify only the folder name as shown in these functionally identical examples:

FileMove "C:\*.txt, C:\My Folder"
FileMove "C:\*.txt, C:\My Folder\*.*"
Flag

(optional) this flag determines whether to overwrite files if they already exist:

0 = (default) do not overwrite existing files
1 = overwrite existing files

ErrorLevel

ErrorLevel is set to the number of files that could not be moved due to an error, or 0 otherwise. However, 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 on the source file prior to moving it.

Unlike FileCopy, moving a file onto itself is always considered successful, even if the overwrite mode is not 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.

Remarks

FileMove moves files only. To instead move the contents of a folder (all its files and subfolders), see the examples section below. To move or rename a single folder, use DirMove.

The operation will continue even if error(s) are encountered.

Although this function is capable of moving files to a different volume, the operation will take longer than a same-volume move. This is because a same-volume move is similar to a rename, and therefore much faster.

Related

FileCopy, DirCopy, DirMove, FileDelete

Examples

FileMove "C:\My Documents\List1.txt", "D:\Main Backup\"  ; Move the file without renaming it.
FileMove "C:\File Before.txt", "C:\File After.txt"  ; Rename a single file.
FileMove "C:\Folder1\*.txt", "D:\New Folder\*.bkp"  ; Move and rename files to a new extension.

 

; The following example moves all files and folders inside a folder to a different folder:
ErrorCount := MoveFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
if ErrorCount <> 0
    MsgBox ErrorCount " files/folders could not be moved."

MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite := false)
; Moves all files and folders matching SourcePattern into the folder named DestinationFolder and
; returns the number of files/folders that could not be moved.
{
    if DoOverwrite = 1
        DoOverwrite := 2  ; See DirMove for description of mode 2 vs. 1.
    ; First move all the files (but not the folders):
    FileMove SourcePattern, DestinationFolder, DoOverwrite
    ErrorCount := ErrorLevel
    ; Now move all the folders:
    Loop Files, SourcePattern, "D"  ; D means "retrieve folders only".
    {
        DirMove A_LoopFilePath, DestinationFolder "\" A_LoopFileName, DoOverwrite
        ErrorCount += ErrorLevel
        if ErrorLevel  ; Report each problem folder by name.
            MsgBox "Could not move " A_LoopFilePath " into " DestinationFolder
    }
    return ErrorCount
}