批量重命名通话记录

  1 //标记歌曲信息的结构体
  2 typedef struct _MP3_ID3v1_STRUCT
  3 {
  4     char Header[4];        /*标签头必须是"TAG"否则认为没有标签*/ 
  5     char Title[31];        /*标题*/ 
  6     char Artist[31];    /*作者*/ 
  7     char Album[31];        /*专集*/ 
  8     char Year[5];        /*出品年代*/ 
  9     char Comment[29];    /*备注*/ 
 10     char reserve;        /*保留*/ 
 11     char track;;        /*音轨*/ 
 12     char Genre;            /*类型*/ 
 13 }MP3_ID3v1_STRUCT,* pMP3_ID3v1_STRUCT;
 14 
 15 
 16 void CMp3RenameDlg::OnBnSelectDir()
 17 {
 18     SelectDir();
 19     //SelectFile();
 20     //SelectFileMore();
 21     //SelectFileOrDir();
 22     m_EditDir.SetWindowText(m_strDir);
 23 }
 24 
 25 void CMp3RenameDlg::OnBnClickedOk()
 26 {
 27     if(m_strDir.IsEmpty())
 28     {
 29         return;
 30     }
 31 
 32     WIN32_FIND_DATA FindFileData;
 33     TCHAR szSearchFormat[MAX_PATH];
 34     wsprintf(szSearchFormat,_T("%s\\*.mp3"),m_strDir.GetString());
 35     HANDLE hFind = FindFirstFile(szSearchFormat,&FindFileData);
 36     if( hFind != INVALID_HANDLE_VALUE )
 37     {
 38         do 
 39         {
 40             if( hFind == INVALID_HANDLE_VALUE )
 41             {
 42                 return;
 43             }        
 44             Rename(m_strDir.GetBuffer(),FindFileData.cFileName);
 45         } while (FindNextFile(hFind, &FindFileData));
 46     }
 47 }
 48 
 49 
 50 void CMp3RenameDlg::SelectDir()
 51 {
 52     /*
 53         使用 BROWSEINFO 打开获取文件夹路径
 54     */
 55     TCHAR szBuffer[MAX_PATH] = {0};
 56     BROWSEINFO bi;
 57     ZeroMemory(&bi,sizeof(BROWSEINFO));
 58     bi.hwndOwner = NULL;
 59     bi.pszDisplayName = szBuffer;
 60     bi.lpszTitle = _T("选择文件夹");
 61     bi.ulFlags = BIF_RETURNFSANCESTORS;
 62     LPITEMIDLIST idl = SHBrowseForFolder(&bi);
 63     if( NULL == idl )
 64     {
 65         return;
 66     }
 67     SHGetPathFromIDList(idl, szBuffer);
 68     m_strDir = szBuffer;
 69 }
 70 
 71 void CMp3RenameDlg::SelectFile()
 72 {
 73     /*
 74         使用 CFileDialog 选择单个文件
 75     */
 76     CFileDialog dlg = CFileDialog(FALSE,NULL,NULL,OFN_READONLY,_T("音频文件(*.mp3)|*.mp3|音频文件(*.wav)|*.wav||",this));
 77     if( dlg.DoModal() == IDOK )
 78     {
 79         m_strDir = dlg.GetPathName();        
 80     }
 81 
 82     /*
 83         使用 OPENFILENAME 选择单个文件
 84     */
 85     TCHAR szBuffer[MAX_PATH] = {0};
 86     OPENFILENAME ofn;
 87     ZeroMemory(&ofn,sizeof(OPENFILENAME));
 88     ofn.lStructSize = sizeof(ofn);
 89     ofn.hwndOwner = m_hWnd;
 90     ofn.lpstrFilter = _T("音频文件(*.mp3)\0*.mp3\0音频文件(*.wav)\0*.wav)");
 91     ofn.lpstrInitialDir = _T("D:\\");
 92     ofn.lpstrFile = szBuffer;
 93     ofn.nMaxFile = MAX_PATH;
 94     ofn.nFilterIndex = 1;
 95     ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
 96 
 97     bool bRet = GetOpenFileName(&ofn);
 98 
 99     m_strDir = szBuffer;
100 
101 }
102 
103 void CMp3RenameDlg::SelectFileMore()
104 {
105     /*
106         使用 OPENFILENAME 选择多个文件
107     */
108     TCHAR szBuffer[MAX_PATH] = {0};
109     OPENFILENAME ofn;
110     ZeroMemory(&ofn,sizeof(OPENFILENAME));
111     ofn.lStructSize = sizeof(ofn);
112     ofn.hwndOwner = m_hWnd;
113     ofn.lpstrFilter = _T("音频文件(*.mp3)|音频文件(*.wav)");
114     ofn.lpstrInitialDir = _T("D:\\");
115     ofn.lpstrFile = szBuffer;
116     ofn.nMaxFile = MAX_PATH;
117     ofn.nFilterIndex = 0;
118     ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ALLOWMULTISELECT;
119 
120     bool bRet = GetOpenFileName(&ofn);
121 
122     m_strDir = szBuffer;
123 }
124 
125 void CMp3RenameDlg::SelectFileOrDir()
126 {    
127     /*
128         使用 BROWSEINFO 选择文件或者文件夹
129     */
130     TCHAR szBuffer[MAX_PATH] = {0};
131     BROWSEINFO bi;
132     ZeroMemory(&bi,sizeof(BROWSEINFO));
133     bi.hwndOwner = NULL;
134     bi.pszDisplayName = szBuffer;
135     bi.lpszTitle = _T("选择文件夹或者文件夹");
136     bi.ulFlags = BIF_BROWSEINCLUDEFILES;
137     LPITEMIDLIST idl = SHBrowseForFolder(&bi);
138     if( NULL == idl )
139     {
140         return;
141     }
142     SHGetPathFromIDList(idl, szBuffer);
143     m_strDir = szBuffer;
144 }
145 
146 void CMp3RenameDlg::Rename(char* szDir, char* szFile)
147 {
148     TCHAR szFileName[MAX_PATH] = {0};
149     wsprintf(szFileName, "%s\\%s",szDir,szFile);
150 
151     FILE* fp = fopen(szFileName,_T("r+b"));
152     if( NULL == fp )
153     {
154         return;
155     }
156 
157     MP3_ID3v1_STRUCT stMp3Info;
158     ZeroMemory(&stMp3Info,sizeof(MP3_ID3v1_STRUCT));
159     fseek(fp,-128L,SEEK_END);
160     fread(&stMp3Info.Header,3,1,fp);
161     if(strcmp(stMp3Info.Header,"TAG")!=0)
162     {
163         return ;
164     }
165     fread(&(stMp3Info.Title),30,1,fp);
166     fread(&(stMp3Info.Artist),30,1,fp);
167     fread(&(stMp3Info.Album),30,1,fp);
168     fread(&(stMp3Info.Year),4,1,fp);
169     fread(&(stMp3Info.Comment),28,1,fp);
170     fclose(fp);
171 
172     TCHAR szFileNameNew[MAX_PATH] = {0};
173     wsprintf(szFileNameNew,"%s\\%s.mp3", szDir, stMp3Info.Title);
174 
175     int nRet = rename(szFileName, szFileNameNew);
176     if( nRet == 0 )
177     {
178         
179     }
180     else
181     {
182 
183     }
184 }

 

posted @ 2014-08-14 20:18  曾经的碎片  阅读(152)  评论(0)    收藏  举报