本文所述实例主要实现了删除某个盘符下指定位置的文件,可以是TXT、doc、jpeg等格式,只要选定格式后,再定义好盘符,即可一键删除所有指定类型的文件。再次提示删除前请确认,且删除后不可恢复。

以下是最主要的核心代码,其它代码读者可以自己添加。

SHFILEINFO shInfo;

memset(&shInfo,0,sizeof(SHFILEINFO));

HIMAGELIST hImage = (HIMAGELIST)SHGetFileInfo("C:\\",0,&shInfo, sizeof( SHFILEINFO ),

SHGFI_SYSICONINDEX | SHGFI_SMALLICON );

m_ImageList.Attach(hImage);

m_ComboEx.SetImageList(&m_ImageList);

m_ComboEx.ResetContent();

char pchDrives[128] = {0};

char* pchDrive;

GetLogicalDriveStrings(sizeof(pchDrives), pchDrives); //列举盘符

pchDrive = pchDrives;

int nItem = 0;

while(*pchDrive)

{

COMBOBOXEXITEM cbi;

CString csText;

cbi.mask = CBEIF_IMAGE|CBEIF_INDENT|CBEIF_OVERLAY|

CBEIF_SELECTEDIMAGE|CBEIF_TEXT;

SHFILEINFO shInfo; //定义文件信息

int nIcon;

SHGetFileInfo(pchDrive, 0, &shInfo, sizeof(shInfo),

SHGFI_ICON|SHGFI_SMALLICON); //获取系统文件图标

nIcon = shInfo.iIcon;

//设置COMBOBOXEXITEM结构

cbi.iItem = nItem;

cbi.pszText = pchDrive;

cbi.cchTextMax = strlen(pchDrive);

cbi.iImage = nIcon;

cbi.iSelectedImage = nIcon;

cbi.iOverlay = 0;

cbi.iIndent = (0 & 0x03);

m_ComboEx.InsertItem(&cbi); //插入数据

nItem++;

pchDrive += strlen(pchDrive) + 1;

}

return TRUE; // return TRUE unless you set the focus to a control

}

void CDeleteDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CDeleteDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

HCURSOR CDeleteDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CDeleteDlg::DelFile(CString path,CString name)

{

CString strtemp;

if (path.Right(1) != "\\") //判断路径是否以\结尾

strtemp.Format("%s\\*.*",path);//设置通配符

else

strtemp.Format("%s*.*",path);//设置通配符

CFileFind findfile;

BOOL bfind = findfile.FindFile(strtemp);//查找文件

while (bfind)//循环查找

{

bfind = findfile.FindNextFile();//查找下一个文件

if(!findfile.IsDots() && !findfile.IsDirectory())

{

CString str = findfile.GetFileName();

int index = str.ReverseFind('.');

if(str.Right(str.GetLength()-index) == name)

{

DeleteFile(findfile.GetFilePath());

}

}

else if (findfile.IsDots())

{

continue;

}

else if (findfile.IsDirectory())//如果是目录

{

DelFile(findfile.GetFilePath(),name);//递归查找

}

}

}

void CDeleteDlg::OnButdelete()

{

// TODO: Add your control notification handler code here

CString path,name;

m_ComboEx.GetWindowText(path);

m_ExName.GetWindowText(name);//获得文件扩展名

DelFile(path,name);

MessageBox("已删除指定类型文件!");

}

这里省去了窗体部分的代码,进行过VC开发的朋友应该可以看得懂的。

c语言程序一键删除文件,VC实现批量删除指定文件的方法相关推荐

  1. VC 生成时将指定文件一并拷贝到输出文件夹

    VC 生成时将指定文件一并拷贝到输出文件夹 将文件添加到项目 设置属性 设置项目属性 测试 有一些文件,比如 ReadMe.txt,我们希望生成的时候一并输出.当然我们可以直接复制粘贴,但是这样未免感 ...

  2. R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量

    R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录

  3. linux面试题:删除一个目录下的所有文件,但保留一个指定文件

    此题问题虽小,但是初学者还是很难给出合理的答案的!本文来自老男孩21期网络班学员 面试题:删除一个目录下的所有文件,但保留一个指定文件解答: 假设这个目录是/xx/,里面有file1,file2,fi ...

  4. xml遍历文件夹vector_怎么统计指定文件夹下含有.xml格式的文件数目

    如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...

  5. 批量修改php用什么,php批量修改指定文件后缀的方法

    php批量修改指定文件后缀的方法 发布于 2014-09-14 18:52:21 | 150 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  6. linux脚本定时拷贝文件,使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用m ...

  7. 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards)

    batch_rename_file.py 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards) ''' 主要思路: 1.创建一个batch_rename函数 ...

  8. git在已忽略文件夹中不忽略指定文件

    注意:结尾的星号不能去,去掉就无效了 1.在已忽略文件夹中不忽略指定文件夹 /node_modules/* !/node_modules/layer/ 2.在已忽略文件夹中不忽略指定文件 /node_ ...

  9. python批量改动指定文件夹文件名称

    这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files ...

最新文章

  1. 鹅厂程序员最喜欢用什么编程语言?Leader写代码么?
  2. ad如何镜像器件_使用 Dockerfile 制作镜像
  3. cat日志 搜索_大日志,看我如何对付你
  4. jvm垃圾回收机制_深入理解JVM的垃圾回收机制
  5. 高效神器!小目标检测迎来曙光!SSPNet金字塔网络!川大出品
  6. 最短哈密尔顿圈matlab解法_复杂制造过程最优哈密尔顿圈算法的MATLAB仿真与分析.doc...
  7. x内存满白苹果解决_iphone12pro max无限白苹果重启怎么办
  8. L2-022 重排链表-PAT团体程序设计天梯赛GPLT
  9. 汉字的字向量、词向量和表示学习(中文词向量)
  10. 无需越狱手机,下载越狱版本IPA的方法
  11. linux编辑器终端,分享|尝试将 Jed 作为你的 Linux 终端文本编辑器
  12. javascript 的alert()功能 prompt() 功能
  13. leetcode402. 移掉 K 位数字
  14. Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
  15. python的取整和取余_python中取整运算符
  16. 编程开发常用的英语单词
  17. sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。
  18. FHC2022食饮魅力 势不可挡
  19. idea设置全局ignore
  20. identifier of an instance was altered from XXXX to XXXX解决

热门文章

  1. 固态继电器和电磁继电器模块
  2. Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
  3. AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
  4. 【已阅】Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解
  5. 【金猿产品展】三角兽智慧识屏:一触即达的智能化搜索引擎
  6. 【Next7.2.0版权声明大改动】仅需一步!开启内置版权声明(跟繁琐的自定义版权声明说拜拜~)
  7. input 搜索 实时搜索
  8. 复旦计算机学硕跨专业课,18跨考复旦856经济学硕经验
  9. Successful WSASTARTUP not yet performed
  10. Blender 用拓扑方式制作耳朵