基于VC++6.0的文件名批量转换
2007-07-05汤晓乐杨栋
汤晓乐 杨 栋
摘要:提出了一种能够对大量文件名进行批量转换。从而提高处理文档效率的方法。
关键词:VC文件名批量转换
中图分类号TP311.1
文献标识码B文章编号:1002-2422(2007)03-0024-02
使用电脑时一定会遇到文件操作的问题,如对大量文件执行复制、删除、更改文件名等操作,这些问题如果仅靠Windows操作系统提供的功能来解决,费时费力。本文就提出了一种用VC实现的对文件名进行批量处理的方法,可以方便的实现对大量文件的操作。
1实现原理
本文要实现的是对大量同类文件进行按数字排序。首先通过手工输入或者点击浏览按钮来实现文件夹的选择;其次用CFileFind类来确定其中有多少文件;最后来对每个文件进行转换并给出一个txt的目录文件。
2具体编程
用Microsoft Visual C++6.0建立一个工程,选择MFCApplication Wizard(exe)→Dialog Based。
2.1建立一个的界面
本文主要讲述的是重命名这一功能,其中涉及到有几个控件。
可以手工输入文件路径以及文件格式,也可以通过点个文件来达到输入路径功能。当点击重命名按钮就可以实现文件名的以数字形式的批量转换,而且会将文件的对应目录文件以文本文件形式保存。
2.2添加函数
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(“请先选择要批量转换文件所在文件夹!”,“警告!”);
return;
}
在该文件夹内创建目录文件
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);
确定该文件夹内要处理的有多少个文件
while(isFound)
{
isFound=(BOOL)tempFind.FindNextFile():
if(tempFind.IsDirectory())
continue;
iFileNum++;
}
进行文件名的转换,以文件数定转换后的文件名,如果有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); } 实现转换 dstFile=strPath+dstFileTitle+“,”+strFilter; MoveFile(srcFile,datFile); 存入目录文件中,每一个初始文件名及其转换后的文件名存为1行 CString in; in=dstFileTide+srcTitle+“
”; myFile.Write(in,in.GetLength()); i++: SetWindowText(sreFile); } 关闭myFile,tempFind myFile.Close(); tempFind.Close(); } 3结束语 用VC实现的文件名的转换,比其仅用Windows操作系统提供的方法快上很多,而且该程序具有很好的可移植性,在其他程序中也可以灵活的使用。