#include <stdio.h>
#include <windows.h>
int CopyDocFile(const char *SrcPath,char *DestPath);
void main()
{
CopyDocFile("D://黑客学习//黑客资料//我的文档//电子文档//标准C&C++//C++ Builder 文档","C://test");
}
int CopyDocFile(const char *SrcPath,char *DestPath)
{
if ((GetFileAttributes(SrcPath)) != FILE_ATTRIBUTE_DIRECTORY)
{ // 路径不存在或不是目录
return -1;
}
if ((GetFileAttributes(DestPath)) == FILE_ATTRIBUTE_READONLY)
{ // 路径只读,即不可写
return -1;
}
char NewBuffer[MAX_PATH];
char DestBuffer[MAX_PATH];
char FileBuffer[MAX_PATH];
sprintf(FileBuffer,"%s//*.*",SrcPath);
WIN32_FIND_DATA dat;
HANDLE hFind = ::FindFirstFile(FileBuffer,&dat);
if (hFind == INVALID_HANDLE_VALUE)
{
return -1;
}
else
{
do
{
if (dat.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ // 过滤点"."和".."两个目录
if (dat.cFileName[0] == '.')
continue;
else
{ // 递归进入子目录
sprintf(NewBuffer,"%s//%s",SrcPath,dat.cFileName);
CopyDocFile(NewBuffer,DestPath);
}
}
else
{ // 判断扩展名是否为DOC,不太精确
if((strstr(dat.cFileName,".doc")) != NULL)
{
sprintf(FileBuffer,"%s//%s",SrcPath,dat.cFileName);
sprintf(DestBuffer,"%s//svc%s.tmp",DestPath,dat.cFileName);
CopyFile(FileBuffer,DestBuffer,true);
}
}
}while(::FindNextFile(hFind,&dat));
}
return 0;
}