void FileMove(wchar_t Dir[MAX_PATH],char* format,wchar_t moveDir[MAX_PATH])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind=INVALID_HANDLE_VALUE;
wchar_t DirSpec[MAX_PATH]; //定义要遍历的文件夹的目录
DWORD dwError;
StringCchCopy(DirSpec,MAX_PATH,Dir);
StringCchCat(DirSpec,MAX_PATH,TEXT("\\*")); //定义要遍历的文件夹的完整路径\*
hFind=FindFirstFile(DirSpec,&FindFileData); //找到文件夹中的第一个文件
if(hFind==INVALID_HANDLE_VALUE) //如果hFind句柄创建失败,输出错误信息
{
FindClose(hFind);
return;
}
else
{
while(FindNextFile(hFind,&FindFileData)!=0) //当文件或者文件夹存在时
{
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0&&wcscmp(FindFileData.cFileName,L".")==0||wcscmp(FindFileData.cFileName,L"..")==0) //判断是文件夹&&表示为"."||表示为"."
{
continue;
}
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0) //判断如果是文件夹
{
wchar_t DirAdd[MAX_PATH];
StringCchCopy(DirAdd,MAX_PATH,Dir);
StringCchCat(DirAdd,MAX_PATH,TEXT("\\\\"));
StringCchCat(DirAdd,MAX_PATH,FindFileData.cFileName); //拼接得到此文件夹的完整路径
FileMove(DirAdd,format,moveDir); //实现递归调用
}
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==0) //如果不是文件夹
{
LPTSTR afterName=(LPTSTR)(LPCTSTR)PathFindExtension(FindFileData.cFileName);
char *newAfterName =(char *)malloc( 2*wcslen(afterName)+1 );
wcstombs(newAfterName , afterName, 2*wcslen(afterName)+1 );
if(strcmp(newAfterName, format)==0) //如果后缀名相同
{
wchar_t newDir[MAX_PATH];
StringCchCopy(newDir,MAX_PATH,Dir);
StringCchCat(newDir,MAX_PATH,TEXT("\\\\"));
StringCchCat(newDir,MAX_PATH,FindFileData.cFileName); //拼接得到原文件的完整路径
wchar_t newMoveDir[MAX_PATH];
StringCchCopy(newMoveDir,MAX_PATH,moveDir);
StringCchCat(newMoveDir,MAX_PATH,TEXT("\\\\"));
StringCchCat(newMoveDir,MAX_PATH,FindFileData.cFileName); //拼接得到目标文件的完整路径
wcout << newDir << endl << newMoveDir << endl;
MoveFile(newDir,newMoveDir) ; //进行文件移动
}
}
}
FindClose(hFind);
}
}
为什么不能实现文件的移动啊,用system指令时说找不到