• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

修改mp3的文件名的C++代码片段

OC/C/C++ 水墨上仙 3035次浏览

修改mp3的文件名的C++代码片段


//////////////////////////////////////////////////////////////////////////////////
//用法:命令行输入要处理的mp3所在的文件夹的地址,如果不输入默认当前目录 //
//功能:修改所给文件夹下的所有的mp3的文件名字,修改是根据mp3文件的属性给出的名字//
//作者:Patrol //
//日期:2007.7.3 //
//////////////////////////////////////////////////////////////////////////////////
#include <cstring>
#include <cstdio>
#include <string>
#include <windows.h>
#include <iostream>
using namespace std;

char tag[3+1];//MP3头文件标识
char author[30+1];//作者
char title[30+1];//曲目名
char year[4+1];//发行年份
char remark[30+1];//评论
char disc_name[30+1];//专辑名称

bool ReadMp3Info(const char*fn)
{
 FILE*fp ;
 fp=fopen(fn,"r");
 if(!fp)
 return false ;

 fseek(fp,-128,SEEK_END);
 //读取最后128位的mp3信息

 fread(tag,1,3,fp);
 //读取tag
 tag[3]='\0' ;

 //如果tag值不为“TAG”,则表示不是一个标准可读信息的MP3文件
 if(strcmp(tag,"TAG")!=0)return false ;


 fread(title,1,30,fp);
 fread(author,1,30,fp);

 fread(disc_name,1,30,fp);
 fread(year,1,4,fp);
 fread(remark,1,30,fp);

 fclose(fp);
 return true ;
}
void RenameMp3(char *s)
{
 strcpy(title,"");
 ReadMp3Info(s);
 wchar_t a,b,c=' ';//处理title里存在汉字的情况
 for(int i=0;i<30;i+=2)
 {
 a=title[i];
 a=a<<8;
 b=title[i+1];
 b=b
 a=a|b;/*
 char m[3];
 m[0]=title[i];
 m[1]=title[i+1];
 m[2]='\0';
 cout<<m<<" title["<<i<<"]="<<hex<<(short)title[i]<<" "<<title[i]<<
 " title["<<i+1<<"]="<<hex<<(short)title[i+1]<<" "<<title[i+1]<<
 " a="<<hex<<a<<endl;
 */
 if(a==0x2020)//一个空格为0x20,所以两个空格叠加在一起就是0x2020
 {
 title[i]='\0';
 // cout<<endl<<"i="<<i<<endl;
 break;
 }
 }
 //if()
 string newname(title);
 newname.append(".mp3");
 return ;
}
/*must be zero when first run*/
bool SearchFileIncludeString(char*DirectoryName,int&nCount)
{

 WIN32_FIND_DATA FileData ;
 HANDLE hSearch ;
 char szNewPath[MAX_PATH];
 BOOL fFinished=FALSE ;
 string temp ;

 SetCurrentDirectory(DirectoryName);
 hSearch=FindFirstFile("*.mp3",&FileData);

 if(hSearch==INVALID_HANDLE_VALUE)
 {
 char Output[MAX_PATH];
 sprintf(Output,"No files found IN %s.\n",DirectoryName);
 printf(Output);
 return false ;
 }
 else
 {
 if((strcmp(FileData.cFileName,".")!=0&&strcmp(FileData.cFileName,"..")!=0))
 {
 ++nCount ;
 RenameMp3(FileData.cFileName);
 }
 }

 while(!fFinished)
 {
 if(!FindNextFile(hSearch,&FileData))
 {
 if(GetLastError()==ERROR_NO_MORE_FILES)
 {
 // printf("No more files, Search completed.\n");
 fFinished=true ;
 }
 else
 {
 // printf("Couldn't find next file.\n");
 return false ;
 }
 }

 if((strcmp(FileData.cFileName,".")==0)||(strcmp(FileData.cFileName,"..")==0))
 continue ;
 else
 {
 if(!(FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
 {
 ++nCount ;
 RenameMp3(FileData.cFileName);
 }
 else
 {
 strcpy(szNewPath,DirectoryName);
 strcat(szNewPath,"\\");
 strcat(szNewPath,FileData.cFileName);
 SearchFileIncludeString(szNewPath,nCount);
 ZeroMemory(szNewPath,MAX_PATH);
 }
 }
 }
 FindClose(hSearch);
 return true ;
}

int main(int argc,char *agrv[])
{
 if(argc<2)
 {
 // printf("Please point out the File Directory !");

 agrv[1]=(char*)malloc(MAX_PATH);
 GetCurrentDirectory(MAX_PATH,agrv[1]);

 // return 1;
 }
 int Fcount=0;
 SearchFileIncludeString(agrv[1],Fcount);
// free(argv[1]);
 return 0;
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明修改mp3的文件名的C++代码片段
喜欢 (0)
加载中……