c语言调用DOS命令删除文件,对比:使用cmd命令删除文件夹下所有文件 / 使用DeleteFile函数...

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

1) 使用cmd命令删除文件夹 出处:https://www..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

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值