copy指定目录下包括子目录中所有的文件


#include <windows.h> #include <iostream> #include <string> using namespace std; DWORD EnumerateFileInDrectory(LPSTR szPath) { WIN32_FIND_DATA FindFileData; HANDLE hListFile; CHAR szFilePath[MAX_PATH]; CHAR myFilePath[MAX_PATH]; CHAR copy_to_FilePath[MAX_PATH]="要copy到的绝对路径"; CHAR new_FileName[MAX_PATH]; //构造代表子目录和文件夹路径的字符串,使用通配符“*” lstrcpy(szFilePath, szPath); lstrcpy(myFilePath,szPath); //注释的代码可以用于查找所有以“.txt结尾”的文件。 //lstrcat(szFilePath, "\\*.txt"); lstrcat(szFilePath, "\\*"); //查找第一个文件/目录,获得查找句柄 hListFile = FindFirstFile(szFilePath,&FindFileData); //判断句柄 if(hListFile==INVALID_HANDLE_VALUE) { printf("错误:%d",GetLastError()); return 1; } else { do { /* 如果不想显示代表本级目录和上级目录的“.”和“..”, 可以使用注释部分的代码过滤。 */ if(lstrcmp(FindFileData.cFileName,TEXT("."))==0|| lstrcmp(FindFileData.cFileName,TEXT(".."))==0) { continue; } if(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { printf("%s\t\t",FindFileData.cFileName); printf("<DIR> \n "); lstrcat(myFilePath, "\\"); lstrcat(myFilePath, FindFileData.cFileName); cout<<"file path"<<myFilePath<<endl; EnumerateFileInDrectory(myFilePath); memset(myFilePath,0,MAX_PATH); lstrcpy(myFilePath,szPath); } else { cout<<"file name"<<FindFileData.cFileName<<endl; lstrcat(myFilePath,"\\"); lstrcat(myFilePath,FindFileData.cFileName); memset(new_FileName,0,MAX_PATH); lstrcpy(new_FileName,copy_to_FilePath); lstrcat(new_FileName,FindFileData.cFileName); CopyFile(myFilePath,new_FileName,FALSE); memset(myFilePath,0,MAX_PATH); lstrcpy(myFilePath,szPath); } printf("\n"); } while(FindNextFile(hListFile, &FindFileData)); } return 0; } int main() { CCHAR dir[MAX_PATH]="从哪个目录开始copy"; EnumerateFileInDrectory(dir); return 0; }

 这段代码的主要功能是,将指定目录中的所有文件复制到知道那个的文件中,包括目录中子目录下的文件。 

posted on 2013-12-18 22:03  初日  阅读(4534)  评论(0编辑  收藏  举报

导航