对比:使用cmd命令删除文件夹下所有文件 / 使用DeleteFile函数

19 篇文章 2 订阅
10 篇文章 0 订阅

先说结论:使用命令行的rmdir总是可以把文件/文件夹清除,但是MFC自己的 DeleteFile函数有时出现删除失灵的情况(qt的QDir::removeRecursively()也有类似问题)。

1) 使用cmd命令删除文件夹 出处:https://www.cnblogs.com/jiangyi666/p/6638815.html

rmdir  删除整个目录
好比说我要删除 222 这个目录下的所有目录和档案,这语法就是: 
rmdir /s/q 222 
其中: 
/s 是代表删除所有子目录跟其中的档案。 
/q 是不要它在删除档案或目录时,不再问我 Yes or No 的动作。 
要删除的目录前也可以指定路径,如: 
rmdir /s/q d:\123\abc 
这意思是告诉计算机,把磁盘驱动器 D 的123资料夹里面的abc资料夹中的所有东西全部删除,同时也不要再问我是否要删除。

2)利用CFileFind结合DeleteFile删除文件夹示例。

#include <afx.h>

void vRemoveDirRecursively(CString dir)
{
	CFileFind finder;
	CString path;

	path.Format("%s\\*.*", dir);
	bool bExist = finder.FindFile(path);
	while(bExist)
	{
		bExist = finder.FindNextFile();
		CString cstrDir = finder.GetFilePath();//

		if(!finder.IsDots())
		{
			if(finder.IsDirectory())
			{
				vRemoveDirRecursively(cstrDir);
				RemoveDirectory(cstrDir);
			}
			else
			{
				DeleteFile(cstrDir);
			}
		}
	}

	DeleteFile(dir);
}

int main(void)
{
	//vRemoveDirRecursively(_T("C:\\code\\vc\\1\\ipch"));
	system("rmdir /s/q C:\\code\\vc\\1\\ipch");
	return 0;
}

实测发现,vRemoveDirRecursively()不能总是删除文件夹,但是rmdir绝对可靠。

调用system会造成控制台一闪而过的现象,可以用以下语句取代 system:

WinExec("Cmd.exe /C rmdir /s/q C:\\code\\vc\\1\\ipch", SW_HIDE);

 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值