ディレクトリのリネーム (WinAPI/C++)

ディレクトリをバックアップするために
リネームする処理を書いてみました。

C:\hogeがあったらC:\hoge(0)という名前でRenameします。

BOOL _RenameDirectory(LPCTSTR lpPathName, LPTSTR lpRenamedPathName)
{
BOOL bRet = TRUE;
TCHAR szSrcPathName[_MAX_PATH] = {0};
TCHAR szDestPathName[_MAX_PATH] = {0};
_tcscpy(szSrcPathName, lpPathName);
size_t length = _tcslen(szSrcPathName);
if (length > 0)
{
if (szSrcPathName[length-1] == _T(‘\\’))
szSrcPathName[length-1] = _T(‘\0’);
}
for (int i = 0; i < 0xFFFF; i++)
{
_stprintf(szDestPathName, _T(“%s(%d)”), szSrcPathName, i);
struct __stat64 buf;
if ( -1 == _tstat64(szDestPathName, &buf)) break;
}
bRet = ::MoveFile(lpPathName, szDestPathName);
_tcscpy(lpRenamedPathName, szDestPathName);
return bRet;
}