湯曉樂 楊 棟
摘要:提出了一種能夠?qū)Υ罅课募M行批量轉(zhuǎn)換。從而提高處理文檔效率的方法。
關(guān)鍵詞:VC文件名批量轉(zhuǎn)換
中圖分類號TP311.1
文獻標識碼B文章編號:1002-2422(2007)03-0024-02
使用電腦時一定會遇到文件操作的問題,如對大量文件執(zhí)行復(fù)制、刪除、更改文件名等操作,這些問題如果僅靠Windows操作系統(tǒng)提供的功能來解決,費時費力。本文就提出了一種用VC實現(xiàn)的對文件名進行批量處理的方法,可以方便的實現(xiàn)對大量文件的操作。
1實現(xiàn)原理
本文要實現(xiàn)的是對大量同類文件進行按數(shù)字排序。首先通過手工輸入或者點擊瀏覽按鈕來實現(xiàn)文件夾的選擇;其次用CFileFind類來確定其中有多少文件;最后來對每個文件進行轉(zhuǎn)換并給出一個txt的目錄文件。
2具體編程
用Microsoft Visual C++6.0建立一個工程,選擇MFCApplication Wizard(exe)→Dialog Based。
2.1建立一個的界面
本文主要講述的是重命名這一功能,其中涉及到有幾個控件。
可以手工輸入文件路徑以及文件格式,也可以通過點個文件來達到輸入路徑功能。當點擊重命名按鈕就可以實現(xiàn)文件名的以數(shù)字形式的批量轉(zhuǎn)換,而且會將文件的對應(yīng)目錄文件以文本文件形式保存。
2.2添加函數(shù)
void CBatDig::OnRename()
{
// TODO:Add your control notification handler code here CString strPath,strFilter,srcTitle,src,srcFile,dstFile.dstFileTitle;
int i=1 ,iFileNum=1;
CFile myFile,newFile;
GetDlgItemText(IDC_EXT,strFilter);
判斷文件夾是否為空
if(strPath.IsEmpty())
{
MessaseBox(“請先選擇要批量轉(zhuǎn)換文件所在文件夾!”,“警告!”);
return;
}
在該文件夾內(nèi)創(chuàng)建目錄文件
src=strPath+“*.”+strFilher;
CString list=strPath+“目錄.txtS”;
if(myFile.Open(list,CFile:modeCreat ICFie:modeReadWrite,O)==0)return;
CFileFind tempFind;
BOOL isFound=(BOOL)tempFind.FindFile(SRC);
確定該文件夾內(nèi)要處理的有多少個文件
while(isFound)
{
isFound=(BOOL)tempFind.FindNextFile():
if(tempFind.IsDirectory())
continue;
iFileNum++;
}
進行文件名的轉(zhuǎn)換,以文件數(shù)定轉(zhuǎn)換后的文件名,如果有9個文件,則以1-9的形式命名。
如果是更多.如有99個文件,則為01-99的形式
isFound=(BOOL)tempFind.gindFile(src);
while(isFound&&i { isFound=(BOOL)tempFind.FindNextFile(); if(tempFind.IsDirectory()) confinue; srcFile=tempFind.GetFilePath(); srcTitle=empFind.CetFileTide(); if(iFileNum<10) { dstFileTitle.Format(“%d”i); } else if(iFileNum<100&&iFihNum>9) { dstFileTith.Format(“%02d”,i); } else if(iFikNum<1000&&iFileNum>99) { dstFileTitle.Format(“%03”,j); } else if(iFileNum<10000&&iFihNum>999) { dstFfleTide.Format(“%04d”,i); } else if(iFileNum<100000&&iFileNum>9999) { dstFileTith.Format(“%05d”,j); } else { dstFileTide.Format(“%d”,j); } 實現(xiàn)轉(zhuǎn)換 dstFile=strPath+dstFileTitle+“,”+strFilter; MoveFile(srcFile,datFile); 存入目錄文件中,每一個初始文件名及其轉(zhuǎn)換后的文件名存為1行 CString in; in=dstFileTide+srcTitle+“
”; myFile.Write(in,in.GetLength()); i++: SetWindowText(sreFile); } 關(guān)閉myFile,tempFind myFile.Close(); tempFind.Close(); } 3結(jié)束語 用VC實現(xiàn)的文件名的轉(zhuǎn)換,比其僅用Windows操作系統(tǒng)提供的方法快上很多,而且該程序具有很好的可移植性,在其他程序中也可以靈活的使用。