//GetFolderSize(LPCTSTR szPath/*文件夹路径*/, DWORD *dwFiles/*传NULL即可*/, DWORD *dwFolders/*传NULL即可*/)
DWORD64 GetFolderSize(LPCTSTR szPath, DWORD *dwFiles, DWORD *dwFolders) { TCHAR szFileFilter[512]; TCHAR szFilePath[512]; HANDLE hFind = NULL; WIN32_FIND_DATA fileinfo; DWORD64 dwSize = 0; strcpy(szFilePath,szPath); strcat(szFilePath,"\"); strcpy(szFileFilter,szFilePath); strcat(szFileFilter,"*.*"); hFind = FindFirstFile(szFileFilter,&fileinfo); do { if(fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (!strcmp(fileinfo.cFileName,".") || !strcmp(fileinfo.cFileName,"..")) { //Do nothing for "." and ".." folders } else { TCHAR sztmp[512]; strcpy(sztmp,szFilePath); strcat(sztmp,fileinfo.cFileName); dwSize = dwSize + GetFolderSize(sztmp); if(dwFolders != NULL) { ++(*dwFolders); } } } else { if(dwFiles != NULL) { ++(*dwFiles); } } dwSize += fileinfo.nFileSizelow; }while(FindNextFile(hFind,&fileinfo)); FindClose(hFind); return dwSize; }