批处理文件扩展名

原创 2017年11月30日 19:07:01

需求:

起源于我使用markdown时,保存没有选择markdown格式。累积多次了之后觉得不好看,于是打算改成批处理格式可是一个一个就很难受,于是百度了下,然后感觉百度的东西,用它的批处理不足以显示程序员的逼格,于是就自己动手写了一段代码。

处理前的文件:
处理前

处理后的文件:
处理后

代码

#include<io.h>
#include<string>
#include<iostream>
#include<exception>
using namespace std;

int main(){
    try{
        char *filepath = "C:\\Users\\hujing\\Desktop\\md";
        intptr_t hFile;
        size_t n;//无符号整型
        string p,t;
        struct _finddata_t fileinfo;
        //_findfirst失败返回-1
        if((hFile = _findfirst(p.assign(filepath).append("\\*").c_str(),&fileinfo)) != -1){
            do{
               if(!(fileinfo.attrib & _A_SUBDIR)){
                   p.assign(filepath).append("\\").append(fileinfo.name);
                   cout<<p<<endl;
                   if(p.find('.md') == string::npos){//nops size_t的最大可能值,表示没有匹配
                        t.assign(filepath).append("\\").append(fileinfo.name).append(".md");
                        rename(p.c_str(),t.c_str());
                        cout<<t<<endl;
                    }
               }
            }while(_findnext(hFile,&fileinfo) == 0);
            _findclose(hFile);
        }
    }catch(std::exception &e){
         cout<<e.what()<<endl;
    }
}

遇到的问题

  1. gcc 不能捕获exception异常的解决
    c++标准 try, catch, throw是C++标准里的语法,标准只要求try catch捕获throw出来的异常,并不要求捕获系统异常(如被0除,段错误,CPU异常等)。从C++层面来说,不要期望try, catch能捕获系统异常。
    GCC所实现的C++异常处理框架中,它的catch(…)语法,并不能捕获系统异常。因此,这给C++中异常处理的良好运用打了大大的折扣;不同类型的系统异常等。所以Linux操作系统上的gcc编译的程序中,它只能捕获程序中,曾经被自己显式地throw出来的异常,而对于系统异常,catch block是毫无办法的。

  2. _findnext调用失败
    64bitwindows系统,使用intptr_t hFile instead of long

    2.1 使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台长度,比如64位机器它的长度就是8字节,32位机器它的长度是4字节,定义如下:

    
    #if __WORDSIZE == 64
    
    typedef long int                intptr_t;
    
    #else
    
    typedef int                        intptr_t;
    
    
    #endif
    

    2.2 long64位平台8个字节32位平台4字节

  3. error C2110: “+”: 不能添加两个指针
    “char” :字符串常量是指针类型

参考

  1. windows 下用命令行编译和运行c/c++
  2. C/C++获取文件后缀名并且比较
  3. C++中修改文件夹名以及文件名
  4. C++异常处理
  5. gcc不能捕获系统异常
  6. _findnext Api 64bit下崩溃
  7. 语言编程需要注意的64位和32机器的区别
  8. 关于int、short int、long int、long long 的区别
  9. 尝试用+添加两个指针
版权声明:本文为博主原创文章,未经博主允许不得转载。

批量更改文件后缀(批处理文件写法)

开始→所有程序→附件→记事本→ 保存后将txt文件改为bat文件,放入要批量更改文件后缀(格式)的文件夹中,双击=OK(全部改为JPG格式文件了)。(要反悔可按原路返回——编辑时调换就可以了)...
  • wuyanwen888
  • wuyanwen888
  • 2013年03月08日 12:01
  • 3670

编写批处理文件(扩展名为.bat)

编写批处理文件(扩展名为.bat) 批措置的介绍 扩展名是bat(在Windows NT/2000/xp/2003/win 7也可所以cmd)的文件就是批措置文件。 首先批措置文件是一个文本文件,...
  • yanglr2010
  • yanglr2010
  • 2015年12月05日 17:12
  • 857

批处理修改文件后缀名

  • 2013年01月05日 16:25
  • 2KB
  • 下载

BAT批处理批量修改文件后缀名

@echo off ren *.html *.php代码解释:批量将html文件转为php文件。 使用方法:新建一文本文档,后缀名改为.bat,将以上代码复制其中,保存。将该.bat文件复制到需要修...
  • wt87218604
  • wt87218604
  • 2013年06月25日 01:07
  • 2052

使用批处理获取拖拽文件的文件名+扩展名

今天看了下批处理,拿出来分享下。。。注释都写里面了,大家自己看吧=。= 程序作用:直接将文件拖入该批处理后,会判断扩展名执行相应的程序。(没什么用但是挺有意思的) 代码如下:@echo off R...
  • u014425641
  • u014425641
  • 2016年03月31日 18:54
  • 2458

“.ascx 用户控件”“可以帮助我们完成这种做法,其文件扩展名是“.ascx”,由于ascx文件是用来插入ASPX页面中使用的

 在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏、用户登录/注册和首页上面的一些固定栏目等。这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以...
  • eqiang8271
  • eqiang8271
  • 2007年10月26日 10:47
  • 2503

Excel解决格式与文件扩展名不一致的两种方法

用2007或2010打开.xls格式的excel文件,有时会出现下面这样的提示:您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致。即格式与文件扩展名不一致。单击“是”,打开后的文件出现乱...
  • rooklyn21
  • rooklyn21
  • 2016年12月09日 10:44
  • 3653

文件扩展名

1楼 A 对像代码库文件  AAM Authorware shocked文件  AAS Authorware shocked包  ABF Adobe二进制屏幕字体  ABK Core...
  • qq910438219
  • qq910438219
  • 2011年12月21日 20:31
  • 1040

java 获取文件扩展名

String name = ""; String extention = "";        if(fileName.length()>0 && fileName!=null){  //--截取...
  • yixiaotian1988
  • yixiaotian1988
  • 2012年11月06日 10:37
  • 5034

i春秋:警惕您站上的文件扩展名绕过漏洞

实验环境 实验环境 操作机:Windows XP 目标机:Windows 2003 目标网址:www.test.com实验工具:中国菜刀 实验目的 本课程带领大家...
  • hope_smile
  • hope_smile
  • 2015年06月01日 04:02
  • 1353
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批处理文件扩展名
举报原因:
原因补充:

(最多只允许输入30个字)