修改: http://blog.youkuaiyun.com/jiangredsheep/archive/2005/07/19/429302.aspx 的目录操作,改为文件名批量修改。
如果想保留原来的文件,可以采用copyFile函数,如下代码:
#include
<
iostream
>
#include
<
string
>
#include
<
string
.h
>
#include
<
string
>
#include
<
afx.h
>

using
namespace
std;

char
*
GetAnsicString(
const
CString
&
s)

...
{
int nSize = (s.GetLength() + 1)*sizeof(TCHAR);
//char *pAnsicString = new char[nSize];
char * pAnsicString = (char *)malloc(nSize*sizeof(char));
ZeroMemory(pAnsicString, nSize);
wcstombs(pAnsicString, s, nSize);
return pAnsicString;
}

void
Recurse(LPCTSTR pstr)

...
{
CFileFind finder;
HANDLE hSearch;
DWORD dwAttrs;
TCHAR szDirPath[] = TEXT("C:/Documents and Settings/null/Desktop/fadg0/video/");
TCHAR szNewPath[MAX_PATH];

BOOL fFinished = FALSE;




// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("/*.*");

// start working for files
BOOL bWorking = finder.FindFile(strWildcard);
CString src,dst,filetitle,filename;
int result;

while (bWorking)

...{
bWorking = finder.FindNextFile();



// skip . and .. files; otherwise, we'd
// recur infinitely!

if (finder.IsDots())
continue;

// if it's a directory, recursively search it

if (finder.IsDirectory())

...{
CString str = finder.GetFilePath();
cout << (LPCTSTR) str << endl;
Recurse(str);
continue;

}

src = finder.GetRoot();
filetitle = finder.GetFileTitle();
filename = finder.GetFileName();
if (filename != filetitle)
continue;
src = src + _T("/") + filetitle;
dst = src + _T(".jpg");

//采用重命名部分
char * asicsrc = GetAnsicString(src);
char * asicdst = GetAnsicString(dst);


result = rename(asicsrc,asicdst);
if (result == 0 )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" );
free(asicdst);
free(asicsrc);

// 采用拷贝部分
//if (CopyFile(src, dst, FALSE))
//{
// dwAttrs = GetFileAttributes(src);
// if (dwAttrs==INVALID_FILE_ATTRIBUTES)
// return;

// if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
// {
// SetFileAttributes(dst,
// dwAttrs | FILE_ATTRIBUTE_READONLY);
// }
//}
//else
//{
// printf("Could not copy file. ");
// return;
//}

}
finder.Close();
}

int
APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int
nCmdShow)

...
{
Recurse(_T("C:/Documents and Settings/null/Desktop/fadg0/video/"));
}
如果不需要保留,可以直接采用rename函数实现。