2015-04-03 58 views
-1

我想重命名文件夾中的所有文件都具有相同的名稱,但擴展名不同。我到處尋找解決方案。到目前爲止,我已經寫了下面的代碼,但它不重命名文件..任何想法將不勝感激?重命名文件夾中的關聯文件

void someFunction(){ 

     char drive[_MAX_DRIVE]; 
     char dir[_MAX_DIR]; 
     char fname[_MAX_FNAME]; 
     char ext[_MAX_EXT]; 

     _splitpath(m_DirTree.GetCurrentDir(), drive, dir, fname, ext); 

    CString fpath(_T(m_DirTree.GetCurrentDir())); 

    CString filenameWithoutExtension = fpath.Left(fpath.ReverseFind(_T('.'))); 

    CString fileContainer = fpath.Left(fpath.ReverseFind(_T('\\'))); // eg. L:\PowerStar 5 Demo II\Programs\Demo\Programs 

    fpath = fileContainer + _T("\\");         // eg. L:\PowerStar 5 Demo II\Programs\Demo\Programs\ 

    CString fileN = fpath + fname + _T(".***");       // eg. L:\PowerStar 5 Demo II\Programs\Demo\Programs\TestX.*** 


    WIN32_FIND_DATA data; 
    HANDLE h = FindFirstFile(fpath, &data); 

    if(h!=INVALID_HANDLE_VALUE) 
    { 
     do 
     { 

     CString hpath = (fpath + myPRGName + _T(".***"));     // eg. L:\PowerStar 5 Demo II\Programs\Demo\Programs\TestY.*** 

     rename(fileN, hpath); 

     } while(FindNextFile(h,&data)); 
    } 
    else { 

     cout << "Error: No such folder." << endl; 

    } 
     FindClose(h); 

    } 

} 
} 

回答

0

下面的代碼可能適合您。

DirectoryInfo d = new DirectoryInfo(@"C:\DirectoryToAccess"); 
 
FileInfo[] infos = d.GetFiles(); 
 
foreach(FileInfo f in infos) 
 
{ 
 
    File.Move(f.FullName, f.FullName.ToString().Replace("abc","xyz")); 
 
}