/*

能产生对话框的标志:

FOF_SILENT             //progress dialog

FOF_RENAMEONCOLLISION //replace dialog

FOF_NOCONFIRMATION     //confirmation dialog

FOF_NOCONFIRMMKDIR     //asks for your permission to create a new folder

FOF_NOERRORUI          //error message

FOF_ALLOWUNDO             //允许放回回收站,一般这个最好做默认

FOF_NOCONFIRMATION        //不出现确认对话框(当需要覆盖时)

FOF_SILENT                //不显示进度对话框

FOF_NOERRORUI            //No user interface will be displayed if an error occurs.

FOF_NOCONFIRMMKDIR        //如果目的目录不存在,就默认创建,不需确认

FOF_RENAMEONCOLLISION    //如果文件(夹)已存在,自动为其添加序列号修改文件名。此时不会出现确认对话框

FOF_MULTIDESTFILES         //把文件夹里的所有内容复制到FileOp.pTo指定的文件夹里,而不是直接复制一个文件夹

FOF_SIMPLEPROGRESS        //Displays a progress dialog box but does not show the file names

FOF_CONFIRMMOUSE        //Not currently implemented.

FOF_FILESONLY:            //执行通配符,只执行文件;

FOF_WANTMAPPINGHANDLE:    //要求SHFileOperation()函数返回正处于操作状态的实际文件列表,文件列表

名柄保存在hNameMappings成员中。SHFILEOPSTRUCT结构还包含一个SHNAMEMAPPING结构的数组,此数组

保存由SHELL计算的每个处于操作状态的文件的新旧路径。

说明:

1.以下封装了4个函数_CopyFile,_DeleteFile,_MoveFile,_ReNameFile

2.每个函数都先拷贝了原来的路径,保证了路径是以2个\0\0结尾。(如果不以2个\0\0结尾,往往会出错)

3.对于文件或文件夹都适用

*/

/****************************************************************************

复制文件或者文件夹,需要把路径添加2个\0\0

****************************************************************************/

static

bool _CopyFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags=FOF_NOCONFIRMATION)

{

TCHAR pTo[MAX_PATH]={0};    _tcscpy(pTo,_pTo);

TCHAR pFrom[MAX_PATH]={0};    _tcscpy(pFrom,_pFrom);

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags=    flags;

FileOp.pFrom =    pFrom;

FileOp.pTo    =    pTo;

FileOp.wFunc =    FO_COPY;

return SHFileOperation(&FileOp) == 0;

}

/****************************************************************************

删除文件或者文件夹,需要把路径添加2个\0\0

****************************************************************************/

static

bool _DeleteFile(const TCHAR* _pFrom,WORD flags=FOF_ALLOWUNDO|FOF_NOCONFIRMATION)

{

TCHAR pFrom[MAX_PATH]={0};    _tcscpy(pFrom,_pFrom);

SHFILEOPSTRUCT FileOp={0};

FileOp.pFrom =    pFrom;

FileOp.pTo    =    NULL;                //一定要是NULL

FileOp.fFlags=    flags;

FileOp.wFunc =    FO_DELETE;            //删除操作

return SHFileOperation(&FileOp) == 0;

}

/****************************************************************************

移动文件或者文件夹,需要把路径添加2个\0\0

****************************************************************************/

static

bool _MoveFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags=FOF_NOCONFIRMATION)

{

TCHAR pTo[MAX_PATH]={0};    _tcscpy(pTo,_pTo);

TCHAR pFrom[MAX_PATH]={0};    _tcscpy(pFrom,_pFrom);

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags=    flags;

FileOp.pFrom =    pFrom;

FileOp.pTo    =    pTo;

FileOp.wFunc =    FO_MOVE;

return SHFileOperation(&FileOp) == 0;

}

/****************************************************************************

重命名文件或者文件夹

可以的话用 rename(buf,TempFilePath) (文件和文件夹都可以) because不需要把路径添加2个\0\0

****************************************************************************/

static

bool _ReNameFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags=FOF_NOCONFIRMATION)

{

TCHAR pTo[MAX_PATH]={0};    _tcscpy(pTo,_pTo);

TCHAR pFrom[MAX_PATH]={0};    _tcscpy(pFrom,_pFrom);

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags = flags;

FileOp.pFrom =    pFrom;

FileOp.pTo    =    pTo;

FileOp.wFunc =    FO_RENAME;

return SHFileOperation(&FileOp) == 0;

}

c语言如何重命名文件夹,VC 复制移动删除重命名文件文件夹相关推荐

  1. linux 复制并创建文件夹,Linux_文件及文件夹[创建][复制][移动][删除][重命名]

    一.文件/文件夹创建 1.文件的创建 touch , vi/vim/nano , ... 语   法: touch [-acfm][-d ][-r ][-t ] [--help] [--version ...

  2. linux 文件夹 乱码,Linux 如何删除乱码文件名的文件或文件夹

    Terminal cd 到 Documents, 然后用ls指令,显示有个文件以-$N开头,但是直接通过界面的方式查看 Documents 中的文件,并看不到这个奇怪的文件. 尝试在terminal中 ...

  3. rar文件解压后可以删除吗?rar文件删除后怎么恢复?

    rar通俗一点就叫压缩包,它是压缩包文件类型的其中一种,也是我们比较常见的压缩包类型.且问rar文件解压后可以删除吗?rar文件删除后怎么恢复?别着急,你想知道的答案都在本文,事不宜迟马上来看看吧! ...

  4. linux桌面卷积文件删除不掉,Linux 删除文件夹和文件的命令(强制删除包括非空文件)...

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

  5. win10计算机文件夹,win10我的电脑6个文件夹如何清理_win10删除我的电脑6个文件夹操作步骤...

    使用win10系统过程中,用户需要对系统中多余的文件进行及时的清理,以此提高系统运行的速度,然而最近有用户的win10系统我的电脑中出现了6个文件夹,那么win10我的电脑6个文件夹如何清理呢?下面就 ...

  6. html复制文件到目录,复制指定目录下的全部文件到另一个目录中

    linux下文件的复制.移动与删除命令为:cp,mv,rm 复制指定目录下的全部文件到另一个目录中 假设复制源目录 为 dir1 ,目标目录为dir2.怎样才能将dir1下所有文件复制到dir2下了 ...

  7. 查找重复文件_快速查找、删除重复图片及文件!

    照片或者文件多了难免就会有重复,浪费硬盘空间的情况,下面让我们一起使用ACDSee 官方免费版软件删除你的重复图片及文件吧! 1. 打开软件,点击"工具"下的"查找重复项 ...

  8. Linux 删除文件夹和文件的命令(强制删除包括非空文件)

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

  9. linux删除百万个文件夹,linux下如何删除一百万个文件

    今日QA发了个请求,要求删除某目录下指定格式的文件. [[email protected] resin-3.1.9]# ls | wc -l 1013964 统计了下,有一百万多个文件! 而且文件的命 ...

最新文章

  1. 一 梳理 从 HDFS 到 MR。
  2. 《系统集成项目管理工程师》必背100个知识点-24变更的常见原因
  3. 【Linux】一步一步学Linux——let命令(223)
  4. C++实现一个简易的线程池
  5. mybatis_SQL映射(2)
  6. redis源码剖析(7):基础数据结构quicklist
  7. iTextSharp快速使用指南
  8. 今日头条的企业服务产品线
  9. 守望先锋为何如此火爆
  10. The CDB process terminated
  11. oracle 11g 创建表空间
  12. 【校招Web前端面试干货分享】
  13. Python那些让我疑惑许久的代码--2
  14. L2-027. 名人堂与代金券
  15. Dictionary Learning(字典学习、稀疏表示以及其他)
  16. 圣诞节计算机音乐,圣诞节音乐
  17. 安装python3缺少db4-devel
  18. 华为服务器网口作用,设置网口模式(mode)
  19. 好用的前端组件-颜色选择器
  20. 银行离岸汇款客户交易预测

热门文章

  1. vb/vb.net开发精粹(4)
  2. 三十四、Fluent液体喷雾蒸发模拟
  3. 我心目中最棒的 10 个 Python 库
  4. CVPR 2019 ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language
  5. WSFederation 身份验证模块概述
  6. ##04- Optional
  7. 机器人教练SWOT分析_全球工业机器人市场四大家族SWOT分析
  8. 2018《财富》世界500强出炉,比500强更多的财富在这里!—创成汇
  9. C#与.NET程序员面试宝典 2.1.6 面试题6:C#中的托管代码是什么
  10. linux发展现状和学习建议