自动将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,如需转载请自行联系原作者

目录
相关文章
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
1880 1
|
存储 安全 数据库
Redisson官方文档 - 15. 项目依赖列表
Redisson采用了常见的若干项目作为依赖,比如Netty、Jackson等等。
3678 0
|
11月前
|
人工智能 自然语言处理 搜索推荐
AI做广告,效果还真不差?聊聊怎么用AI搞定个性化广告创作
AI做广告,效果还真不差?聊聊怎么用AI搞定个性化广告创作
671 7
|
机器学习/深度学习 资源调度 计算机视觉
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
707 2
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
|
10月前
|
监控 NoSQL 关系型数据库
保障Redis与MySQL数据一致性的强化方案
在设计时,需要充分考虑到业务场景和系统复杂度,避免为了追求一致性而过度牺牲系统性能。保持简洁但有效的策略往往比采取过于复杂的方案更加实际。同时,各种方案都需要在实际业务场景中经过慎重评估和充分测试才可以投入生产环境。
522 0
|
11月前
|
供应链 搜索推荐 安全
淘宝/京东/亚马逊API实战:中小商家的自动化生存指南
电商API是连接电商平台、商家、支付与物流系统的技术桥梁,具备商品管理、订单处理、用户服务、营销支持等功能,助力业务自动化与数据驱动决策,成为电商生态中提升效率与创新的关键基础设施。
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
1089 6
|
区块链 Python
Python脚本打包 exe,auto-py-to-exe来帮你!
Python脚本打包 exe,auto-py-to-exe来帮你!
2969 0
|
负载均衡 网络虚拟化
【专栏】生成树协议(STP),用于消除网络环路并确保单向通信路径,提高可靠性和避免循环是至关重要的
【4月更文挑战第28天】本文详细介绍了生成树协议(STP),用于消除网络环路并确保单向通信路径。STP基于IEEE 802.1D,涉及根桥选举、端口角色分配及构建无环路径。高级特性包括快速STP(RSTP)的快速收敛、多实例STP(MSTP)的负载均衡和容错,以及各种保护机制。文章还讨论了实际案例和故障排除,为网络工程师提供STP的全面理解与应用指南。
1163 1