Windows中删除和拷贝目录的方法

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 23:03   122   0

一. 删除一个目录(删除该目录下所有的文件和子目录)
BOOL CRobotMatchDlg::DeleteDirectory(LPCSTR szDirName)
{
CFileFind tempFind;
char tempFileFind[200];
sprintf(tempFileFind,"%s//*.*",szDirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory())
{
char tempDir[200];
sprintf(tempDir,"%s//%s",szDirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[200];
sprintf(tempFileName,"%s//%s",szDirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(szDirName))
{
MessageBox("删除目录失败!","警告信息",MB_OK);
return FALSE;
}
return TRUE;
}

二. 目录的复制
BOOL CRobotMatchDlg::CopyDirectory(LPCSTR lpstrSource, LPCSTR lpstrDest)
{
char strTitle[]="File copying";

// Set the File Operation Attribution
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_COPY;

char szBufSource[MAX_PATH] = "";
strcpy(szBufSource,lpstrSource);
szBufSource[strlen(lpstrSource)+1] = 0;
char szBufDest[MAX_PATH] = "";
strcpy(szBufDest,lpstrDest);
szBufDest[strlen(lpstrDest)+1] = 0;

FileOp.pFrom = szBufSource;
FileOp.pTo = szBufDest;
FileOp.fFlags=FOF_ALLOWUNDO;
// FOF_NOCONFIRMATION
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle;

int nOk=SHFileOperation(&FileOp);

if (nOk)
TRACE("There is an error: %d/n",nOk);
else TRACE("SHFileOperation finished successfully/n");

if(FileOp.fAnyOperationsAborted)
TRACE("Operation was aborted!/n");

if (nOk)
return FALSE;
else return TRUE;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP