函数参考


_WinAPI_ShellFileOperation

复制,移动,重命名或删除文件系统对象.

#Include <WinAPIEx.au3>
_WinAPI_ShellFileOperation ( $sFrom, $sTo, $iFunc, $iFlags [, $sTitle [, $hParent]] )

参数

$sFrom 单个字符串或字符串数组,包含源文件的名称.
 为防止意外的结果, 名称应该是完全合格的路径.
$sTo 单个字符串或字符串数组,其中包含目标文件或目录名称.
 为防止意外的结果, 名称应该是完全合格的路径.
$iFunc 操作执行的值. 参数可以是以下值之一:
 $FO_COPY --- 复制 $sFrom 指定的文件到 $sTo 指定的位置
 $FO_DELETE --- 删除 $sFrom 指定的文件
 $FO_MOVE --- 移动 $sFrom 指定的文件到 $sTo 指定的位置
 $FO_RENAME --- 重命名 $sFrom 指定的文件.不能用一个函数调用此标志命名多个文件.
$iFlags 文件操作的控制标志. 参数可以是以下值之一:
 $FOF_ALLOWUNDO --- 如果可能的话,保留撤消信息
 $FOF_CONFIRMMOUSE --- 未使用
 $FOF_FILESONLY --- 如果一个通配符指定文件名(*.*),执行该操作只对文件,不对文件夹
 $FOF_MULTIDESTFILES --- $sTo 指定多个目标文件,而不是一个目录下所有源文件将被保存( $sFrom 中的每个源文件)
 $FOF_NOCONFIRMATION --- 对所有显示的对话框回答"是"
 $FOF_NOCONFIRMMKDIR --- 如果操作需要创建新的目录,不要求用户确认
 $FOF_NO_CONNECTED_ELEMENTS --- 版本5.0.不移动连接的一组文件,只移动指定的文件
 $FOF_NOCOPYSECURITYATTRIBS --- 版本4.71.不复制该文件的安全属性.目标文件接收新文件夹的安全的属性
 $FOF_NOERRORUI --- 如果发生错误,不向用户显示对话框
 $FOF_NORECURSEREPARSE --- 未使用
 $FOF_NORECURSION --- 仅针对本地目录的操作,不要递归操作到子目录.这是默认行为
 $FOF_RENAMEONCOLLISION --- 在移动,复制,或重命名操作中,如果目标文件的名称已存在于目的地,给正在运作的文件一个新名称
 $FOF_SILENT --- 不显示进度对话框
 $FOF_SIMPLEPROGRESS --- 显示进度对话框,但不显示个别文件的名称,因为它们运作中
 $FOF_WANTMAPPINGHANDLE --- 如果 FOF_RENAMEONCOLLISION 指定任何文件被重命名,指定一个名称映射对象.
 $FOF_WANTNUKEWARNING --- 版本5.0.如果文件被删除操作过程中永久摧毁,而不是回收,发送警告
 $FOF_NO_UI --- 版本6.0.6060(Windows Vista).执行静默地操作.不出现用户界面.
$sTitle [可选参数] 进度条对话框的标题.此参数只用于 $iFlags 指定有 $FOF_SIMPLEPROGRESS 标志时.
$hParent [可选参数] 显示运行状态的对话框句柄.

返回值

成功: 返回 $tagSHFILEOPSTRUCT 结构,包含附加补充信息.
失败: 返回 0并设置@error为下列值之一:
-1 - AutoIt 固有错误.
113 - 源和目标文件是相同的文件.
114 - 源缓冲区指定多个文件路径,但只有一个目标文件路径.
115 - 重命名操作,但指定的目标路径是不同的目录. 使用移动操作代替.
116 - 源为根目录,不能被移动或重命名.
117 - 操作已被用户取消, 或当有适当标志提供给本函数时,被静默取消.
118 - 目标是源的子目录树.
120 - 安全设置拒绝访问源.
121 - 源或目标路径超过或将超过 MAX_PATH.
122 - 操作涉及多个目标路径,可能是一个移动操作失败的案例.
124 - 源或目标或两者的路径无效.
125 - 源和目标具有相同的父文件夹.
126 - 目标路径已存在文件.
128 - 目标路径已存在文件夹.
129 - 文件名称超过 MAX_PATH.
130 - 目标为只读光盘,可能未格式化.
131 - 目标为只读 DVD, 可能未格式化.
132 - 目标为可写 CD-ROM, 可能未格式化.
133 - 操作涉及的文件大于目标媒体或文件系统.
134 - 源为只读光盘(CD-ROM), 可能未格式化.
135 - 源为只读 DVD, 可能未格式化.
136 - 源为可写 CD-ROM, 可能未格式化.
183 - MAX_PATH 超出操作期间.
1026 - 未知错误. 通常是由于源或目标路径无效.
65536 - 目标发生未知错误.
65652 - 目标是根目录,不能重命名.

注意/说明

函数应该使用完全合格的路径名. 使用线程相对路径名是不安全的.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $sTemp

; 创建临时文件
$sTemp = _WinAPI_GetTempFileName(@TempDir)

ShellExecute('::{645FF040-5081-101B-9F08-00AA002F954E}')

; 删除到回收站
If FileExists($sTemp) Then
    _WinAPI_ShellFileOperation($sTemp, '', $FO_DELETE, BitOR($FOF_ALLOWUNDO, $FOF_NO_UI))
EndIf