/*

能产生对话框的标志:

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. Spring Cloud Feign的两种使用姿势
  2. 算法-----数组------合并两个有序数组
  3. asp.net core 系列 18 web服务器实现
  4. windows10中屏幕键盘 vs 触摸键盘
  5. 《Go语言程序设计》读书笔记(二)函数
  6. 蓝桥杯 C语言 试题 算法训练 审美课
  7. python catia二次开发_CATIA VBA二次开发教程|使用零件的Body生成Product
  8. linux 更新包缓存目录,清除ubuntu下缓存、软件安装包和多余内核
  9. 基于fpga的方波发生器
  10. 有效 TCP RST
  11. 数据挖掘-朴素贝叶斯算法
  12. LightOJ 1395 A Dangerous Maze (II) 期望DP
  13. 甲骨文数据库基本知识
  14. java手机一款三国游戏_JAVA热游—富甲三国之雄霸天下原创心得
  15. 文本特征提取——one-hot
  16. 易拉宝Roll up Banner
  17. Appscan工具的使用
  18. Nginx配置WS、WSS域名
  19. 插件3-滑动验证(geetest)
  20. 获取TPM的VID以及DID

热门文章

  1. 【井字游戏】做一款回忆童年的游戏
  2. 4399笔试面试——感受
  3. Spring boot 配置健康检查
  4. 「镁客早报」库克抨击高通,表明不可能在法律纠纷中达成和解;传闻无人驾驶公司Aurora融资20亿美元...
  5. 网上酒店客房预定系统数据库设计
  6. 转:传说中破解基础----背的滚瓜烂熟差不多就会破解
  7. 无人值守自动安装——PXE(Preboot eXecution Environment)
  8. 入门深度学习与机器学习的经验和学习路径
  9. Role,Rolebinding与serviceAccount
  10. mysql的双机热备自动切换_Mysql双机热备配置(超详细多图版)