【发布】bat2exe compiler 自制编译器(提供源码)
bat吧
全部回复
仅看楼主
level 6
ProAyeR 楼主
大家好,作为一名刚来到bat吧的新手,我要以最好的作品来让大家认识。
如标题所示,我今天带来的作品是批处理转可执行文件的编译器。
虽然网上可以搜索到的BatToExeConverter比我的编译器好很多
但是我毕竟是原创而且提供源码,大家见谅
下载地址见2楼
源码解析见3楼及以下
明显的不足:编译后的程序无法加入作者信息已以及设置图标
好处:提供给其他程序本功能
所使用的语言:batch(B+)
所使用的辅助工具:BatToExeConverter,Bat_editor,B+ compiler,MiniHex,Notepad++,UXP3.0
特别感谢:wwzzxx1380(虽然他压根不认识我)
2017年11月27日 05点11分 1
level 11
我是源码解析[滑稽]
2017年11月28日 13点11分 3
level 6
ProAyeR 楼主
下载地址:http:[不高兴]//pan[不高兴].baidu.[不高兴]com/s[不高兴]/1c2ljw[不高兴]li
密码:eje9
好吧我的错,没有及时更新qwq
2017年11月29日 04点11分 4
level 6
ProAyeR 楼主
代码
头代码:(设置以及检测文件是否存在)
主要代码:编译过程
如果需要编译的文件不存在以及支持文件不存在
延时和错误报告子程序
源码包含在compiler.bin内,自行解密即可(MiniHex)
2017年11月29日 05点11分 5
level 6
ProAyeR 楼主
先从最主要的部分开始解析:
这条指令就是copy指令,就是将生成的com.exe与要编译的批处理文件的内容合在一起
指令简化后如下:(头代码将%filename%设置为了"temp")
copy /b com.exe + temp.bat temp.exe
/b参数就是将两个文件的内容合在一起
com.exe就是从某编译器上扣下来的代码,只要在com.exe的结尾插入所需处理批处理的文件信息即可(这可能是一个弊端)
从而实现了编译功能
至于与使用用户的交流较少,编译手段还比较麻烦,愿各位大佬见谅(最好可以改进啦)
2017年11月29日 05点11分 6
level 6
ProAyeR 楼主
不过值得新手学习的是if指令的用法(简略讲一下)
if指令可以检测某个条件,基本指令语法如下
if [not] [exist] "<判断主体>" <判断条件> "<条件>" <判断执行后的指令>
比如
if "1"=="2" exit
如果1等于2那么退出(当然这是不可能的)
if not "1"=="2" exit
如果1等于2那么不退出
使用了exist参数后就是检测某文件存不存在了(同上)
2017年11月29日 05点11分 7
level 6
ProAyeR 楼主
还有一个有意思的地方就是利用批处理来产生一个信息框
可以有dalao已经看出来了msg 和 msgbox
说实话相比它们我更喜欢VBS的msgbox因为批处理自带的msg的信息框好丑啊
具体调用方法就是将代码写入缓存然后执行
不过要注意的是如果要加入()%&!^<>这样的字符的话,记得加入转义符^
至于如何使用VBS嘛,大家自己体会qwq
2017年11月29日 05点11分 8
level 6
ProAyeR 楼主
还有就是ping延时为什么要用for循环而不是直接ping呢?
那是因为for指令循环的延时时间更精确一些
子程序的调用与goto不同的地方
如果是直接call 某批处理文件的话,其实也和子程序调用一个道理
goto只是跳到某代码段,不能多个位置调用且回到原有位置
其二就是子程序可以处理批处理带来的参数
如果我在某处需要将代码的某处数字改为另一数字,那还需要使用另一段代码很麻烦
所以在调用子程序时可以如下调用
call :<子程序名> [参数一 参数二 参数三……]
就能给子程序几个参数,在子程序内使用%1表示得到的参数一,%2表示得到的参数二,以此类推可以快速对代码实施调用还有高度的自定义性,顺便节省代码长度(当然这个程序没有体现这一点)
最后一点:这个批处理没有用到变量延缓(给好评:D)
2017年11月29日 05点11分 9
level 6
ProAyeR 楼主
未解之谜:
1.我到底是怎么把一个com.exe插入到一个批处理里面去的呢?
2.为什么文件夹背景不一样了
3.B+是什么
(坐等大佬回复)
2017年11月29日 05点11分 10
level 7
呃??感谢我???感谢我干嘛????
2017年12月02日 15点12分 11
level 7
MiniHex[滑稽]
2017年12月02日 15点12分 12
level 7
如果要插入到头部:
type batchfile.bat >>comfile.com
如果要插入到尾部:
type comfile.com >> batchfile.bat
是不是这意思??
可进制不同的话就不能用以上方法,得用copy+这个玩意儿
2017年12月02日 15点12分 13
咦,并没有用到这个,但是这个方法也是可以的(插入头部那个貌似没用?)
2017年12月09日 11点12分
level 13
不错 鼓励一下
2017年12月02日 17点12分 14
level 7
emmm...
2017年12月09日 16点12分 15
1 2 尾页