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; }

 這段代碼的主要功能是,將指定目錄中的所有文件復制到知道那個的文件中,包括目錄中子目錄下的文件。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM