博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文件改名代码共享

Posted on 2008-03-12 00:50  yufold  阅读(675)  评论(0)    收藏  举报
虽然是c++ 但是算法是一样的。这个程序可以遍历一个目录找到相应文件 然后改成需要的名字 好处是想怎么改就怎么改 比工具强大多了。

 #include <windows.h>
#include <tchar.h>
#include <stdio.h>

void main( )
{
   //定义变量
   WIN32_FIND_DATA FoundFileName;     //结果数据   这个function就是把结果存在这里,然后指针一个一个移动读取
   HANDLE hFind;                      //句柄
   const TCHAR baseDir[MAX_PATH] = "C:\\Documents and Settings\\cnbot.y\\My Documents\\127small\\www.7starhandbags.com\\img\\products";
    TCHAR SW[MAX_PATH];
   strcpy(SW,baseDir);
   strcat(SW,"\\*");
  //搜索
 
   printf("%s\n",baseDir);
   hFind = FindFirstFile(SW,
                         &FoundFileName);
   TCHAR filename[MAX_PATH];
   // 名字基础 形如:路径+目录+\

       strcpy(filename, baseDir ) ;    // 拷贝根路径
       strcat( filename, "\\" ) ;      // 加//


   //判断是否找到
   if (hFind == INVALID_HANDLE_VALUE)
   {
      printf ("FindFirstFile failed (%d)\n", GetLastError());
      return 0;
   }
   //找到就 traverse 下一个
   else
   {

     _tprintf (TEXT("The first file found is %s\n"),
                FoundFileName.cFileName);

      while (FindNextFile(hFind, &FoundFileName) != 0)
      {
         _tprintf (TEXT(" Next file: %s\n"), FoundFileName.cFileName);


         char folder_tmp[MAX_PATH];
         strcpy(folder_tmp,filename);
         strcat( folder_tmp, FoundFileName.cFileName ) ;  // 加目录
       strcat( folder_tmp, "\\" );  // 加文件名

       for(int i=0;i<14;i++)
       {
            int   result;
            char suffixold[10];
            char suffixnew[10];
            char oldall[MAX_PATH];
            char newall[MAX_PATH];
            //临时文件名
            strcpy(oldall,folder_tmp);
            strcpy(newall,folder_tmp);

            //后缀弄好
            sprintf(suffixold,"%02d",i);
            sprintf(suffixnew,"%02d",i);

            //临时文件名继续处理
            strcat( oldall, suffixold );  // 加文件名
            strcat( oldall, "s.jpg" );  // 加文件名

            strcat( newall, "replica_" );  // 加文件名
            strcat( newall, suffixnew );  // 加文件名
            strcat( newall, ".jpg" );  // 加文件名

          //  printf("%s\n",oldall);
          //  printf("%s\n",newall);

            result = rename(  oldall , newall  );
            if ( result == 0 )
               puts ( "File successfully renamed" );
            else
               perror( "Error renaming file" );

       }


      }    //while



      FindClose(hFind);
   }
}