两个目录文件夹,要求复制一个目录下与另一个目录下相同文件名的文件 system("xcopy A\*.* B /s /h /d /y "); /d复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。另外参数自行百度。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 曾经做过个文件(夹)同步软件,自己用来同步代码的.告诉你,NTFS格式的分区 ,用那个findfilenext一个一个找出来的文件,是按文件名排序的,FAT32的,是按文件创建日间排序的.知道这些,按类似分治排序对比,很快的. 才6000多个,算多么,难道你是手动复制的?写个代码呗,就最简单的2个for循环就行了,6000多个根本不需要考虑性能。 遍历文件夹吧CFileFind::FindFile/FileNextFile() 先枚举出来放到两个set里边,做差值比较 然后再处理 搜“robocopy” 这个代码我常写,给你一个吧#include "io.h"BOOL CreateDir(CString strDirector){ CString strTemp; int i = strDirector.GetLength(); char cTemp[MAX_PATH*2]; memset(cTemp , 0 , MAX_PATH*2); strcpy(cTemp , strDirector); if(CreateDirectory(strDirector , NULL) == TRUE) { return TRUE; } else { for (i-=2; i>0; i--) { if(cTemp[i] == '\\') break; else cTemp[i] = 0; } if (i==0) return FALSE; strTemp = cTemp; if(CreateDir(strTemp)) { if(CreateDirectory(strDirector , NULL)) return TRUE; else return FALSE; } } return FALSE;}BOOL CopyDir(LPCTSTR lpszSrcDir, LPCTSTR lpszDesDir){ WIN32_FIND_DATA FindData; HANDLE hFind; hFind = FindFirstFile(lpszSrcDir, &FindData); if(hFind!=INVALID_HANDLE_VALUE) { TCHAR szDirName[MAX_PATH*2]; TCHAR szDesDirName[MAX_PATH*2]; lstrcpy(szDirName, lpszSrcDir); lstrcpy(szDesDirName, lpszDesDir); 1[_tcsrchr(szDirName, TEXT('\\'))] = 0;//去掉*.* 1[_tcsrchr(szDesDirName, TEXT('\\'))] = 0; CreateDir((CString)szDesDirName); do { TCHAR szPath[MAX_PATH*2]; TCHAR szDesPath[MAX_PATH*2]; if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {//如果是目录 if(lstrcmp(FindData.cFileName, TEXT(".")) && lstrcmp(FindData.cFileName, TEXT(".."))) { lstrcpy(szPath, szDirName); lstrcat(szPath, FindData.cFileName); lstrcat(szPath, TEXT("\\*.*")); lstrcpy(szDesPath, szDesDirName); lstrcat(szDesPath, FindData.cFileName); if (CreateDir((CString)szDesPath)) SetFileAttributes(szDesPath, FindData.dwFileAttributes); lstrcat(szDesPath, TEXT("\\*.*")); CopyDir(szPath, szDesPath);//拷贝子目录 } } else {//如果是文件,就拷贝这个文件 lstrcpy(szPath, szDirName); lstrcat(szPath, FindData.cFileName); lstrcpy(szDesPath, szDesDirName); lstrcat(szDesPath, FindData.cFileName); if(_access(szDesPath) != 0) //如果目标文件存在就复制 CopyFile(szPath, szDesPath, FALSE); } }while(FindNextFile(hFind, &FindData));// m_bComplete = TRUE; FindClose(hFind); return TRUE; } return FALSE;}调用:CopyDir("C:\\src\\*.*", "D:\\Des\\*.*");//记得目录后加*.* 这个帖子麻烦大家去回答下 控件随着对话框缩放问题 怎样向数据库写入多条记录 ========统计:9.18,你的城市拉防空警报了吗?========== 能否用CreateWindow创建一个子控件,然后自定义它的窗口过程? DLL转换为LIB 关于static控件内容的刷新,请各位高手帮帮忙,万分感谢! 高手请进,一个菜鸟问题在线等待解答 怎样控制页面大小? 简单任务! CManualAccessor的使用 mirror driver的问题
告诉你,NTFS格式的分区 ,用那个findfilenext一个一个找出来的文件,是按文件名排序的,
FAT32的,是按文件创建日间排序的.
知道这些,按类似分治排序对比,很快的.
#include "io.h"
BOOL CreateDir(CString strDirector)
{
CString strTemp;
int i = strDirector.GetLength();
char cTemp[MAX_PATH*2];
memset(cTemp , 0 , MAX_PATH*2);
strcpy(cTemp , strDirector);
if(CreateDirectory(strDirector , NULL) == TRUE)
{
return TRUE;
}
else
{
for (i-=2; i>0; i--)
{
if(cTemp[i] == '\\')
break;
else
cTemp[i] = 0;
}
if (i==0)
return FALSE;
strTemp = cTemp;
if(CreateDir(strTemp))
{
if(CreateDirectory(strDirector , NULL))
return TRUE;
else
return FALSE;
}
}
return FALSE;
}
BOOL CopyDir(LPCTSTR lpszSrcDir, LPCTSTR lpszDesDir)
{
WIN32_FIND_DATA FindData;
HANDLE hFind;
hFind = FindFirstFile(lpszSrcDir, &FindData);
if(hFind!=INVALID_HANDLE_VALUE)
{
TCHAR szDirName[MAX_PATH*2];
TCHAR szDesDirName[MAX_PATH*2];
lstrcpy(szDirName, lpszSrcDir);
lstrcpy(szDesDirName, lpszDesDir);
1[_tcsrchr(szDirName, TEXT('\\'))] = 0;//去掉*.*
1[_tcsrchr(szDesDirName, TEXT('\\'))] = 0;
CreateDir((CString)szDesDirName);
do
{
TCHAR szPath[MAX_PATH*2];
TCHAR szDesPath[MAX_PATH*2];
if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{//如果是目录
if(lstrcmp(FindData.cFileName, TEXT(".")) && lstrcmp(FindData.cFileName, TEXT("..")))
{
lstrcpy(szPath, szDirName);
lstrcat(szPath, FindData.cFileName);
lstrcat(szPath, TEXT("\\*.*"));
lstrcpy(szDesPath, szDesDirName);
lstrcat(szDesPath, FindData.cFileName);
if (CreateDir((CString)szDesPath))
SetFileAttributes(szDesPath, FindData.dwFileAttributes);
lstrcat(szDesPath, TEXT("\\*.*"));
CopyDir(szPath, szDesPath);//拷贝子目录
}
}
else
{//如果是文件,就拷贝这个文件
lstrcpy(szPath, szDirName);
lstrcat(szPath, FindData.cFileName);
lstrcpy(szDesPath, szDesDirName);
lstrcat(szDesPath, FindData.cFileName);
if(_access(szDesPath) != 0) //如果目标文件存在就复制
CopyFile(szPath, szDesPath, FALSE);
}
}while(FindNextFile(hFind, &FindData));
// m_bComplete = TRUE;
FindClose(hFind);
return TRUE;
}
return FALSE;
}
调用:CopyDir("C:\\src\\*.*", "D:\\Des\\*.*");//记得目录后加*.*