FileMove


移动或重命名一个或者多个文件。

FileMove, SourcePattern, DestPattern [, Flag]

参数

SourcePattern 单个文件的名称或一个通配符类型例如 C:\Temp\*.tmp 。如果未指定绝对路径,SourcePattern 将假设在 %A_WorkingDir%
DestPattern 目标文件的名称或通配符类型,如果绝对路径未指定将假设在 %A_WorkingDir% 。要执行一个简单的移动 -- 保留已存在的文件名 -- 仅指定文件夹名称像那些功能相同的例子显示的那样:
FileMove, C:\*.txt, C:\My Folder
FileMove, C:\*.txt, C:\My Folder\*.*
Flag

(可选参数) 此 flag(标识) 决定是否覆盖已存在的文件:

0 = (默认) 不覆盖存在的文件
1 = 覆盖存在的文件

此参数可以是一个 expression(表 达式) 甚至是一个算得的 true(真) 或 false(假) (因为真或假在内部被存为 1 和 0 )。

ErrorLevel

ErrorLevel 被设为由于出错而不能被移动的文件数量,或相反是 0 。不过,如果源文件是单个文件(无通配符)并且文件不存在,ErrorLevel 将设为 0 。要侦测这种情况,在移动源文件前对它使用 IfExistFileExist()

FileCopy 不同的是,移动一个文件覆盖它自己总是视为成功的,即使覆盖模式没有启用。

注意

FileMove 仅移动文件。要代替它移动一个文件夹的内容(它的所有文件和子文件夹),请看下面的示例部分。要移动或重命名单个文件夹,使用 FileMoveDir

即使错误发生,操作也将继续。

尽管此命令能够移动文件到一个不同的 volume(卷),但此操作将比在同一个卷上移动花更长的时间。这是因为同一个卷移动类似于重命名,因此更加迅速。

相关命令

FileCopy, FileCopyDir, FileMoveDir, FileDelete

示例

FileMove, C:\My Documents\List1.txt, D:\Main Backup\ ; 不重命名地移动文件。
FileMove, C:\File Before.txt, C:\File After.txt ; 重命名单个文件。
FileMove, C:\Folder1\*.txt, D:\New Folder\*.bkp ; 移动并重命名文件为一个新的扩展名。

 

; 下面的例子移动一个文件夹内的所有文件和文件夹到一个不同的文件夹:
ErrorCount := MoveFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
if ErrorCount <> 0
MsgBox %ErrorCount% 个文件/文件夹不能被移动。
MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
; 移动所有匹配 SourcePattern 的文件和文件夹到名为 DestinationFolder 的文件夹
; 并返回不能被移动的文件/文件夹的数量。此函数需要 v1.0.38+
; 因为它使用了 FileMoveDir 的模式 2 。
{
if DoOverwrite = 1
DoOverwrite = 2 ; 请看 FileMoveDir 关于模式 2 对模式 1 的描述。
; 首先移动所有文件(而不是文件夹):
FileMove, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
ErrorCount := ErrorLevel
; 现在移动所有的文件夹:
Loop, %SourcePattern%, 2 ; 2 表示 "仅获取文件夹" 。
{
FileMoveDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
ErrorCount += ErrorLevel
if ErrorLevel ; 报告每一个有问题的文件夹名称。
MsgBox 不能移动 %A_LoopFileFullPath% 到 %DestinationFolder% 。
}
return ErrorCount
}
翻译:天堂之门 menk33@163.com 2008年8月8日