当前位置:   article > 正文

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

cmd命令删除文件夹

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

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

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

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

  1. #include <afx.h>
  2. void vRemoveDirRecursively(CString dir)
  3. {
  4. CFileFind finder;
  5. CString path;
  6. path.Format("%s\\*.*", dir);
  7. bool bExist = finder.FindFile(path);
  8. while(bExist)
  9. {
  10. bExist = finder.FindNextFile();
  11. CString cstrDir = finder.GetFilePath();//
  12. if(!finder.IsDots())
  13. {
  14. if(finder.IsDirectory())
  15. {
  16. vRemoveDirRecursively(cstrDir);
  17. RemoveDirectory(cstrDir);
  18. }
  19. else
  20. {
  21. DeleteFile(cstrDir);
  22. }
  23. }
  24. }
  25. DeleteFile(dir);
  26. }
  27. int main(void)
  28. {
  29. //vRemoveDirRecursively(_T("C:\\code\\vc\\1\\ipch"));
  30. system("rmdir /s/q C:\\code\\vc\\1\\ipch");
  31. return 0;
  32. }

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

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

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/205697
推荐阅读
相关标签
  

闽ICP备14008679号