文件操作的问题

hhfcsdn 2005-05-18 12:09:17
我想把满足一定条件的文件如*aaaa*.txt类型的,从D盘移动到E盘,包括每个子目录里的。请教一下,该如何设计啊,有源程序可以看一下吗?
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kugou123 2005-05-18
  • 打赏
  • 举报
回复
递归查找,然后逐个MoveFile
wongflying 2005-05-18
  • 打赏
  • 举报
回复
我这有段代码,在拷贝文件的时候同时检查时间,保留最新的文件。你不要的这段可以自己去掉!

CopyDir(CString sSrc, CString sDest)
{
CFileFind find;
CString sName;

if ( !find.FindFile(sSrc+"\\*.*") )
return FALSE;


BOOL bValue = TRUE;
while ( bValue )
{
bValue = find.FindNextFile();
sName = find.GetFileName();
if ( strcmp(sName, ".") == 0 || strcmp(sName, "..")==0 )
continue;

if ( find.IsDirectory() )
{
//是目录,创建同名目录
SECURITY_ATTRIBUTES sa;

sa.nLength = 0;
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;

if ( CreateDirectory(sDest+"\\"+sName, &sa) )
CopyDir(sSrc+"\\"+sName, sDest+"\\"+sName);
}
else
{
//是文件,拷贝
if ( !CopyFile(sSrc+"\\"+sName, sDest+"\\"+sName, TRUE) )
{
DWORD dwError = GetLastError();
if ( dwError == 80 )
{
//文件已经存在,保留最新
CFile fSrc, fDest;
CFileStatus fsSrc, fsDest;

fSrc.Open(sSrc+"\\"+sName, CFile::modeRead);
fDest.Open(sDest+"\\"+sName, CFile::modeRead);
fSrc.GetStatus(fsSrc);
fDest.GetStatus(fsDest);
fSrc.Close();
fDest.Close();

if ( fsSrc.m_mtime > fsDest.m_mtime )
if ( !CopyFile(sSrc+"\\"+sName, sDest+"\\"+sName, FALSE) )
dwError = GetLastError();
}
}
}
}

find.Close();
return TRUE;
}
vcmute 2005-05-18
  • 打赏
  • 举报
回复
SHFileOperation即可,可带通配符
SHFILEOPSTRUCT sfo;

sfo.hwnd = NULL;
sfo.wFunc = FO_COPY;
sfo.pFrom = "c:\\*aaaa*.txt";
sfo.pTo = "d:";
sfo.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;

hr = SHFileOperation(&sfo);
jerry 2005-05-18
  • 打赏
  • 举报
回复
那就是 递归地应用 CFileFind 了
hhfcsdn 2005-05-18
  • 打赏
  • 举报
回复
谢谢各位兄弟啦
OpenHero 2005-05-18
  • 打赏
  • 举报
回复
还有一种方法
直接调用system命令

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧