重命名多个文件

时间:2011-06-16 17:55:12

标签: winapi visual-c++ windows-ce

int rename_file()

{   

WIN32_FIND_DATA FindFileData;
HANDLE hFind;
 hFind = FindFirstFile(L"\\Hard Disk\\*.*", &FindFileData);
 LPTSTR oldfilename;
 LPTSTR newfilename;    
 if (hFind == INVALID_HANDLE_VALUE) 
{
  printf ("FindFirstFile failed (%d)\n", GetLastError());
  return 0;
} 
else 
{
int i=1000;       
    while (FindNextFile(hFind, &FindFileData) != 0) 
  {
   _tprintf (TEXT("The first file found is %s\n"),FindFileData.cFileName);
     oldfilename =FindFileData.cFileName;
     StringCchPrintf(newfilename, 30, TEXT("%s\\newfile_%d.txt"),dirname, i);
     BOOL rs = MoveFile(oldfilename,newfilename);
     i++;
  }

  FindClose(hFind);
  return 1;
}

}

我无法重命名文件,我正在工作wince 6,而在StringCchPrintf调试我在coredll.dll中获得异常可以帮助我....

1 个答案:

答案 0 :(得分:4)

您尚未为newFileName分配任何缓冲区,因此当您在StringCchPrintf中使用它时,它只是一个未初始化的指针。

试试这个:

TCHAR newFile[260]; // or whatever length you wish
LPTSTR newfilename = &newFile[0];

此外,您应该检查来自MoveFile的返回代码,并在出错时输出合理的内容。养成为所有可能返回错误的函数调用执行此操作的习惯。