1つまたは複数のファイルを移動または名前変更します。
FileMove SourcePattern, DestPattern , Overwrite
型:文字列
単一のファイル名、または "C:\Temp\*.tmp" のようなワイルドカードパターンを指定します。SourcePatternは、絶対パスが指定されない場合、A_WorkingDirにあるとみなされます。
型:文字列
絶対パスが指定されていない場合は、A_WorkingDirにあると仮定される、保存先の名前またはパターン。
この場合、ファイル名の最初のアスタリスク(*)は、拡張子を除いたソースファイル名に置き換えられ、最後のフルストップ(.)以降の最初のアスタリスクは、ソースファイルの拡張子に置き換えられます。アスタリスクがあっても拡張子が省略された場合は、ソースファイルの拡張子が使用されます。
既存のファイル名を残したまま、単純に移動する場合は、以下の例のようにフォルダ名のみを指定します:
FileMove "C:\*.txt", "C:\My Folder"
FileMove "C:\*.txt", "C:\My Folder\*.*"
保存先ディレクトリはすでに存在している必要があります。My Folderが存在しない場合、上記の最初の例ではターゲットファイル名として "My Folder"が使用され、2番目の例ではファイルは移動しません。
型:整数
省略したときの初期値は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"のようなワイルドカードパターンの移動は、どのファイルにもマッチしない場合に成功したとみなされます。
FileCopyとは異なり、上書きモードが有効でない場合でも、ファイルの自分自身への移動は常に成功したとみなされます。
ファイルが見つかった場合、A_LastErrorには0(ゼロ)または最後の失敗の直後のオペレーティングシステムのGetLastError()関数の結果が設定されます。それ以外の場合、A_LastError は、ファイルが見つからなかった理由を示す可能性のあるエラーコードを含みます。
FileMoveは、ファイルのみを移動します。フォルダの内容(すべてのファイルとサブフォルダ)を移動する場合は、以下の例のセクションを参照してください。1つのフォルダーを移動したり、名前を変更したりするには、DirMoveを使用します。
エラーが発生しても、操作は続行されます。
本機能は別ボリュームへのファイル移動が可能ですが、同ボリュームへの移動に比べ、操作に時間がかかります。これは、同量移動はリネームと似ているため、より高速に処理できるためです。
FileCopy、DirCopy、DirMove、FileDelete
フォルダー内のすべてのファイルやフォルダーを別のフォルダーに移動します。
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)
; SourcePatternに一致するすべてのファイルとフォルダーをDestinationFolderというフォルダーに移動し
; 移動できなかったファイル/フォルダの数を返す。
{
    ErrorCount := 0
    if DoOverwrite = 1
        DoOverwrite := 2  ; モード 2 とモード 1 の比較については、DirMoveを参照してください。
    ; まず、すべてのファイルを移動します(フォルダは移動しません):
    try
        FileMove SourcePattern, DestinationFolder, DoOverwrite
    catch as Err
        ErrorCount := Err.Extra
    ; 今度は、すべてのフォルダを移動します:
    Loop Files, SourcePattern, "D"  ; Dは「フォルダだけを取り出す」という意味です。
    {
        try
            DirMove A_LoopFilePath, DestinationFolder "\" A_LoopFileName, DoOverwrite
        catch
        {
            ErrorCount += 1
            ; 各問題フォルダを名前で報告します。.
            MsgBox "Could not move " A_LoopFilePath " into " DestinationFolder
        }
    }
    return ErrorCount
}