c语言程序一键删除文件,VC实现批量删除指定文件的方法
本文所述实例主要实现了删除某个盘符下指定位置的文件,可以是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实现批量删除指定文件的方法相关推荐
- VC 生成时将指定文件一并拷贝到输出文件夹
VC 生成时将指定文件一并拷贝到输出文件夹 将文件添加到项目 设置属性 设置项目属性 测试 有一些文件,比如 ReadMe.txt,我们希望生成的时候一并输出.当然我们可以直接复制粘贴,但是这样未免感 ...
- R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量
R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录
- linux面试题:删除一个目录下的所有文件,但保留一个指定文件
此题问题虽小,但是初学者还是很难给出合理的答案的!本文来自老男孩21期网络班学员 面试题:删除一个目录下的所有文件,但保留一个指定文件解答: 假设这个目录是/xx/,里面有file1,file2,fi ...
- xml遍历文件夹vector_怎么统计指定文件夹下含有.xml格式的文件数目
如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...
- 批量修改php用什么,php批量修改指定文件后缀的方法
php批量修改指定文件后缀的方法 发布于 2014-09-14 18:52:21 | 150 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
- linux脚本定时拷贝文件,使用Linux shell脚本实现FTP定时执行批量下载指定文件
使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用m ...
- 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards)
batch_rename_file.py 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards) ''' 主要思路: 1.创建一个batch_rename函数 ...
- git在已忽略文件夹中不忽略指定文件
注意:结尾的星号不能去,去掉就无效了 1.在已忽略文件夹中不忽略指定文件夹 /node_modules/* !/node_modules/layer/ 2.在已忽略文件夹中不忽略指定文件 /node_ ...
- python批量改动指定文件夹文件名称
这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files ...
最新文章
- 鹅厂程序员最喜欢用什么编程语言?Leader写代码么?
- ad如何镜像器件_使用 Dockerfile 制作镜像
- cat日志 搜索_大日志,看我如何对付你
- jvm垃圾回收机制_深入理解JVM的垃圾回收机制
- 高效神器!小目标检测迎来曙光!SSPNet金字塔网络!川大出品
- 最短哈密尔顿圈matlab解法_复杂制造过程最优哈密尔顿圈算法的MATLAB仿真与分析.doc...
- x内存满白苹果解决_iphone12pro max无限白苹果重启怎么办
- L2-022 重排链表-PAT团体程序设计天梯赛GPLT
- 汉字的字向量、词向量和表示学习(中文词向量)
- 无需越狱手机,下载越狱版本IPA的方法
- linux编辑器终端,分享|尝试将 Jed 作为你的 Linux 终端文本编辑器
- javascript 的alert()功能 prompt() 功能
- leetcode402. 移掉 K 位数字
- Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
- python的取整和取余_python中取整运算符
- 编程开发常用的英语单词
- sqlserver 属性 TextHeader 不可用于 StoredProcedure“[dbo].[x]”该对象可能没有此属性,也可能是访问权限不足而无法检索。 该文本已加密。
- FHC2022食饮魅力 势不可挡
- idea设置全局ignore
- identifier of an instance was altered from XXXX to XXXX解决
热门文章
- 固态继电器和电磁继电器模块
- Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
- AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
- 【已阅】Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解
- 【金猿产品展】三角兽智慧识屏:一触即达的智能化搜索引擎
- 【Next7.2.0版权声明大改动】仅需一步!开启内置版权声明(跟繁琐的自定义版权声明说拜拜~)
- input 搜索 实时搜索
- 复旦计算机学硕跨专业课,18跨考复旦856经济学硕经验
- Successful WSASTARTUP not yet performed
- Blender 用拓扑方式制作耳朵