FileMoveDir

移动文件夹及其所有子文件夹和文件. 它还可以重命名文件夹.

FileMoveDir, Source, Dest , Flag

参数

Source

源目录的名称(不含末尾的反斜杠), 如果未指定绝对路径, 则假定在 %A_WorkingDir% 中. 例如: C:\My Folder

Dest

目录的新路径和名称(不含末尾的反斜杠), 如果未指定绝对路径, 则假定在 %A_WorkingDir%. 例如: D:\My Folder.

注意: Dest 是目录在移动后使用的实际路径和名称; 它 不是 Source 移动后保存的目录(不过存在下面提到的已知限制).

Flag

(可选) 指定下列单个字符的其中一个:

0(默认): 不覆盖现有的文件. 如果存在 Dest 名称的文件或目录, 则操作会失败.

1: 覆盖现有的文件. 但是, 不会删除在 Dest 中没有被 Source 目录中文件覆盖的其他子目录或文件. 已知限制: 如果 Dest 已经以文件夹的形式存在, 而且它与 Source 位于同一卷上, 则 Source 会被移入到这个文件夹中而不覆盖它. 要避免此问题, 请参阅下一个选项.

2: 与上面的模式 1 相同, 不过不存在模式 1 中提到的限制.

R: 重命名目录而不移动它. 尽管普通的重命名和移动具有相同的效果, 但如果您想要 "完全成功或完全失败" 的结果时它就会有用; 即您不希望由于 Source 或其中的某个文件被锁定(在使用中) 而只是部分移动成功. 尽管这种方法不能移动 Source 到另一个卷中, 但它可以移动到同一个卷中的其他任何目录. 如果已经存在 Dest 名称的文件或目录时, 则操作失败.

错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.

备注

FileMoveDir 移动单个文件夹到新位置. 要移动整个文件夹的内容(它的所有文件和子文件夹), 请参照 FileMove 的示例部分.

如果源和目标在不同的卷或 UNC 路径中, 则会执行复制/删除操作而不进行移动.

相关

FileCopyDir, FileCopy, FileMove, FileDelete, 文件循环, FileSelectFolder, SplitPath

示例

#1

FileMoveDir, C:\My Folder, D:\My Folder  ; 移动到新驱动器.
FileMoveDir, C:\My Folder, C:\My Folder (renamed), R  ; 简单地重命名.
FileMoveDir, C:\My Folder, C:\New Location\My Folder, R  ; 只有在同一个卷上, 文件夹可以被"重命名到"另一个位置.