自动将BAT文件转换为EXE

简介:

我前几天发表了一篇文章“C/C++中一次性执行多个DOS命令”,那篇文章里介绍了如何在一个EXE程序中执行多个DOS命令。

以那篇文章中的技术为核心,对其扩展就写出了自动将BAT转换为EXE的程序,实现的思路很简单:

  1. 将原来代码中直接赋值到字符串变量中的BAT脚本,改为读取BAT文件,并将其输出到一个头文件里;
  2. 原来代码的其余部分保持不变,只是通过include将转换后的头文件包含进来,此时如果要求不高的话,其实就已经是可以使用了;
  3. 但是一个EXE文件一般都有自己的图标、版本号、厂商、版权等信息,于是又参考DevCpp的makefile做了一些处理,使得生成的EXE可以有这些信息,为了便于以后做图形界面,这些信息都用INI文件保存,这样以后图形界面上只要把配置参数存到INI文件里,再执行转换命令就可以了;

总之,绝大部分都是些琐碎的工作,只要耐心点,没啥技术难度。

代码在github: https://github.com/tywali/Bat2ExeConverter

下面对代码结构进行一些简单说明:

  1. prepare.cpp,初始化编译用的中间目录,根据INI文件的配置生成资源文件,拷贝图标文件到编译目录;
  2. compile.cpp,对编译目录中的代码进行编译,生成转换后的EXE;
  3. main.cpp,程序入口;

使用方法:

  1. 编译需要MinGW环境,可自行下载配置,或者到DevCpp官网下载包含MinGW的DevCpp,https://sourceforge.net/projects/orwelldevcpp/
  2. 下载DevCpp后,可在安装目录中找到MinGW64(我的机器是64位的,因此是这个目录,32位机器没有验证),将MinGW64\bin添加到系统的PATH参数下,否则编译时会找不到编译器;
  3. 将上面github中的的代码clone下来,进入bin目录,执行命令:
    Bat2Exe example.bat

    这样就可以了。

如果想要配置EXE的图标、版本等信息,可以打开bin目录下的compile.ini,对参数进行配置即可,参数很简单,看名字就知道是什么意思了,不确定的自己改一改,多编译几次也就明白了。

欢迎大家下载使用,如果有问题可在这里或者在github上提出,我会尽力解决的。






本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/2052281,如需转载请自行联系原作者

目录
相关文章
|
3天前
|
C语言
C的编译命令 | .o .s .exe .c文件
C的编译命令 | .o .s .exe .c文件
6 0
|
5月前
|
开发工具 Windows
编写bat文件在windows上自动执行cmd命令
windows 电脑上直接新建 txt 记事本文件,编写好要执行的命令后,将后缀修改成 .bat,然后直接点击文件就可以执行里面的命令了
120 0
|
Windows
Windows BAT中7zip压缩时排除某些目录
Windows BAT中7zip压缩时排除某些目录
216 0
cmd操作--关于exe可执行程序输出乱码的设置
cmd操作--关于exe可执行程序输出乱码的设置
401 0
cmd操作--关于exe可执行程序输出乱码的设置
bat文件调用CMD命令快速显示ip
bat文件调用CMD命令快速显示ip
383 0
Win10系统下如何在某个特定的文件夹内输出所有文件路径
Win10系统下如何在某个特定的文件夹内输出所有文件路径
220 0
|
移动开发 Java Windows
【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )
【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )
373 0
【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )
|
Windows
BAT批处理文件无法运行提示“/E /I /Y ‘XCOPY‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”解决方法
BAT批处理文件无法运行提示“/E /I /Y ‘XCOPY‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”解决方法
943 0
BAT批处理文件无法运行提示“/E /I /Y ‘XCOPY‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”解决方法
|
JavaScript 前端开发
VBS转化为exe可执行文件
VBS转化为exe可执行文件
960 0
VBS转化为exe可执行文件
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
363 0
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示