c++如何批量修改文件后缀名

来源:互联网 发布:淘宝开店理论知识 编辑:程序博客网 时间:2024/05/16 09:13


1、问题描述
在日常的应用中,很多时候会用到批量修改图片的后缀名。比如将1.bmp修改为1.jpg。或许我们用格式工厂或者批处理文件.bat课以轻而易举的做到。这里暂不讨论。本篇文章仅仅对如何用c++做图片批处理修改后缀名做一些说明。
2、c++程序
程序思路:先获取到文件夹下所有文件的名字,然后,用newname取代原来的oldname。

#include "stdafx.h"#include <stdio.h>#include <fstream>#include <Windows.h>#include <cstdio>#include <iostream>#include <string>#include <io.h>#include <vector>#include <direct.h>#include <stdlib.h>#include <memory>using namespace std;void getFilesAll( string path, vector<string>& files){         //获取文件夹下面的所有文件名字    //文件句柄         long  hFile  =  0;         //文件信息    struct _finddata_t fileinfo;    string p;         if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)    {        do {                if  ((fileinfo.attrib & _A_SUBDIR))                {                     if  (strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)                    {                        getFilesAll(  p.assign(path).append("\\").append(fileinfo.name) , files   );                    }                }                else                        {                files.push_back(p.assign(path).append("\\").append(fileinfo.name) );                 }        }while(_findnext(hFile, &fileinfo) == 0);        _findclose(hFile);         }   }void postfix(){    char *filePath="G:\\image\\";    char strname[60];    vector<string> filesa;    getFilesAll(filePath ,filesa );    for(unsigned int i=0 ; i<filesa.size(); i++)    {        char newname[80]; //store the folder's name        char oldname[80];        strcpy(oldname, filesa[i].c_str());        cout<<filesa[i].c_str()<<endl;        //strcpy(newname, filesa[i].c_str());        sprintf(newname,"G:\\result\\%d.jpg",i);        //sprintf(newname,"%d.jpg",i);        rename(oldname,newname);        if (rename(oldname,newname))        {            cout<<"第"<<i<<"个文件名字从"<<filesa[i].c_str()<<"修改为"<<newname<<"成功"<<endl;        }        cout<<strname<<endl;    }}void main(){    postfix();    system("pause");}


3、效果图展示
(1)执行程序前状态如图1所示
图1:程序执行前状态

图1 执行程序前状态

(2)执行程序后状态如图2所示
图2:程序执行后状态

图2 执行程序后状态

(3)程序执行结果如图3所示
图3:程序执行结果展示
图3 程序执行结果


4、总结
这个写的一般,但是也算是勉强能解决问题。希望能够对别人有借鉴或者帮助。
5、参考文献
http://zhidao.baidu.com/link?url=YPNaKWx22B7eNydm-fZMCefpjFfO0cZum4v2EQPAhSImvKJhyzxjR87_IZ1k11u0P9c6TYux4hpBA5efkTPfsxBUNle74JlcdATsTok1KCy
6、祝愿
不忘初心,方得始终。2016年,各位朋友新年快乐!

0 0
原创粉丝点击