我写了个程序,希望对指定文件夹下的子文件夹名进行修改,添加一个时间在原有的名字后面,但是有点问题,麻烦各位帮我看一下,3QQ。void CCopyFileDlg::RenameFile()
{
UpdateData();
CTime dntm;
dntm=CTime::GetCurrentTime();
CString time = dntm.Format("%Y%m%d"); CFileFind finder; 
CString NewFileName,str,FileExtend,FileName,FileRoot="";
BOOL bWorking = finder.FindFile(m_SourcePath+"\\*.*"); 
EnablePathName(m_OldFileName);
while(bWorking) 

bWorking=finder.FindNextFile(); 
if (finder.IsDots()) 
continue; 
m_OldFileName=finder.GetFilePath(); 
FileName=finder.GetFileName();
m_Num++;
str.Format("%d%d%d",m_Num/100,m_Num/10,m_Num%10);
for (int i=0;i<FileName.GetLength();i++)
{
if(FileName[i]=='.')break;
}
FileExtend=FileName.Right(FileName.GetLength()-i);
m_NewFileName = FileName+time;
CFile::Rename(m_OldFileName,m_NewFileName);

UpdateData(FALSE);
}void CCopyFileDlg::EnablePathName(CString &FileName)
{
CString str1,str2;
for (int i=0;i<FileName.GetLength();i++)
{
if (FileName[i]=='\\')
{
str1=FileName.Left(i);
str2=FileName.Right(FileName.GetLength()-i);
str1+="\\";
FileName=str1+str2;
i++;
}
}
return;
}

解决方案 »

  1.   

    什么问题?Debug下调试一下看看
      

  2.   

    我调试到
    CFile::Rename(m_OldFileName,m_NewFileName);
    这里面的值分别是
    m_OldFileName  {"C:\Documents and Settings\Administrator\桌面\文件夹\新建文件夹"}
    m_NewFileName  {"新建文件夹20120420"}
    程序看上去传递进去的参数是没有问题的,但是确实会运行到这句话后弹出“对已未命名文件的存取被拒绝”,
    想不明白是怎么回事的
      

  3.   

    m_NewFileName请设置绝对路径。
    不能用Rename把C盘的东西移动到你工程所在盘(假设在D盘)。
      

  4.   

    在MSDN中有写Directories cannot be renamed. 但是经试验却发现可以改目录的名字。设置绝对路径,并且属同一个盘,就可以改。