FileCopyDir


复制一个文件夹连同它的所有文件和子文件夹(和 xcopy 相似)。

FileCopyDir, Source, Dest [, Flag]

参数

Source 源目录的名称(末尾不带反斜线),如果绝对路径未指定将被假设在 %A_WorkingDir% 。例如:C:\My Folder
Dest 目标目录的名称(末尾不带反斜线),如果绝对路径未指定将被假设在 %A_WorkingDir% 。 例如:C:\Copy of My Folder
Flag

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

0 (默认): 不覆盖存在的文件。如果 Dest 有一个文件或目录存在,复制操作将不生效并失败。

1: 覆盖存在的文件。不过,任何 Dest 中的文件或子文件夹没在 Source 有对应的将不会被删除。

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

ErrorLevel

如果发生了一个问题 ErrorLevel 会被设为 1 ,此外为 0 。
但是,如果源目录包含网页组成的 PageName.htm 和相应的 PageName_files 目录时,即使成功,也会返回 1。

注意

如果目标目录结构不存在,可能的话它将被创建。

由于操作将 recursively(递归地) 复制一个文件夹连同它的所有文件和子文件夹,所以复制一个文件夹到它自身内部的某处目 的地的结果未被定义。要绕弯解决这种情况,先复制它到它自身外部的一个目的地,然后使用 FileMoveDir 来移动复制的文件夹到需要的位置。

FileCopyDir 复制单个文件夹。要代替它复制一个文件夹的内容(它的所有文件和子文件夹),请看 FileCopy 的示例部分。

相关命令

FileMoveDir, FileCopy, FileMove, FileDelete, file-loops, FileSelectFolder, SplitPath

示例

FileCopyDir, C:\My Folder, C:\Copy of My Folder

; 例子 #2: 一个运行的脚本提示你去复制一个文件夹。
FileSelectFolder, SourceFolder, , 3, Select the folder to copy
if SourceFolder =
return
; 否则,继续。
FileSelectFolder, TargetFolder, , 3, Select the folder IN WHICH to create the duplicate folder.
if TargetFolder =
return
; 否则,继续。
MsgBox, 4, , A copy of the folder "%SourceFolder%" will be put into "%TargetFolder%". Continue?
IfMsgBox, No
return
SplitPath, SourceFolder, SourceFolderName ; 仅从它的完全路径提取文件夹名称。
FileCopyDir, %SourceFolder%, %TargetFolder%\%SourceFolderName%
if ErrorLevel
MsgBox 文件夹没能复制,也许因为在 "%TargetFolder%" 里已经存在同名文件夹。
return
翻译:天堂之门 menk33@163.com 2008年8月7日