首页
社区
课程
招聘
如何给Batchenc(编码转换器GUI)生成的bat添加自删命令?
发表于: 2010-10-10 08:58 6986

如何给Batchenc(编码转换器GUI)生成的bat添加自删命令?

2010-10-10 08:58
6986
问题:
这个GUI每次执行都会生成一个不同名的.bat,如:go1.bat,go2.bat,go3.bat …… 不会自动删除,虽然限制了数量在20个内循环,但是还是显得啰嗦~

概况:
Batchenc(GUN/Linux) 一直是最强大的多媒体编码解码命令行工具的 Front-end ,支持所有音视频命令行编码解码,主程序仅76KB,以文本形式预置完整的执行命令,用户可以无限制地编写任意命令参数,并允许在选框内即时修改,这使得 Batchenc 甚至能超出音频视频转换的应用领域。

可惜相见恨晚,它05年停产时我都还没有电脑,最近几天才发现的。Batchenc 、Multi Frontend 、FLAC Frontend 等都是出自程序员 Speek 之手,它们同样有简约强大的优点,其中最强最好的是 Batchenc 。


但是,Batchenc 有个不好的地方,就是在 Batchfiles 文件夹里,每次转换都依顺序递增的方式命名新的批处理,执行一次转换即生成一个新的,不会自动删除。

综述:

所以我想通过修改程序让这些批处理能删除自身,不知道可不可行?
用 Hex 编辑器,能不能给 .exe 插入代码,同时保证 .exe 修改后可以正常执行?

下面这个截图是生成的bat内容:


我想实现的完整的批处理内容是:
@echo off
......
pause
del %0



最短的自删命令应该就是 del %0 吧?另外,批处理末尾还要保留一空行,怎么在 .exe 里插进去?

为了方便测试和验证,我特意上传一个压缩包,包含其中flac.exe/mac.exe两个编码器,可转换WAV/APE/FLAC格式,免得让你们找。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
天哪!预览几次,“现金”就剩下4Kx了,这是什么道理?
本来有154Kx,想悬赏50Kx的!害我要去做IQ题才能把编辑好的帖子发出来!
2010-10-10 09:04
0
雪    币: 217
活跃值: (77)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
新手赚钱不容易
2010-10-10 09:54
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持一下啊支持一下啊
2010-10-10 14:27
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
支持下…………!
2010-10-10 15:57
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
如此精悍,可音视频转换?
2010-10-10 18:46
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
它是一个纯粹的GUI,添加编码命令行工具可以进行相应的格式转换。
你添加 FFmpeg.exe 视频编码工具并写上预置命令,当然就可以转换视频啦!
2010-10-10 18:52
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
没人理了?
2010-10-21 12:25
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JGC
9
你自己不是回答了么?del %0 有啥问题?“批处理还要保留末尾空行”是什么意思?能否举例说明?
2010-10-21 12:49
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
后半句话不用管,是批处理文件的规范。

我说的是在.exe里修改代码,让.exe把“del %0”写到每个批处理的末尾。这个.exe是命令行工具的GUI,生成bat执行音频转换。

PS:没人理的原因是说的太不清楚了?有这么严重?
2010-10-21 13:15
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好吧,“批处理还要保留末尾空行”的意思是,要新插入一行,不能把“del %0”直接写在当前的空白行里,批处理末尾不留一行空白可能会有问题的。

我想解决的问题是:用 Hex 编辑器,能不能给.exe插入代码,同时保证.exe修改后可以正常执行?
我试过插入,但是保存后无法执行。
2010-10-21 13:20
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JGC
12
这回我看明白了,“末尾加空行”本来并不难理解,但你把他和"del %0"放一块,就以为是什么特殊意思了。
我看了下你这个截图生成的bat属于这样的模式对不:
echo off等头
commands
pause

其中头和尾(pause)看上去是自动生成的。中间的commands可以自定义。
因为del *后,文件已被删掉,后面的命令行就无法执行了。那么,在最后加入
del %0&pause
或类似的语句,是否是你想要的结果?
2010-10-21 13:41
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
Hook WriteFile
2010-10-21 13:42
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
嗯!是这样,你很聪明!中间的commands是读取目录下的.cfg文件,理解力很强!

我觉得应该是这样吧:
pause&del %0

否则del命令后面的pause就没用了。

我想要的完整的批处理内容是:
@echo off
......
pause
del %0



要“pause”的原因是在执行完毕后我们要看一下转换成功没有,你知道啦。
2010-10-21 13:50
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
太高深了,我不懂~
不知道你能不能抽空代劳一下呢?
O(∩_∩)O~
2010-10-21 13:52
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
有人能反编译出源代码吗?
2010-10-21 13:55
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
由于没有办法拿到源代码,不可以增加删除临时文件的功能,只能在批处理命令方面想办法了。
之前去掉“chcp 1252”来支持双字节文件名也是用Hex编辑器修改代码的方法解决的。
2010-10-21 14:03
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JGC
18
使用
del %0&pause
的话,是没有问题的,因为批处理是逐行读的。比如,del ***&cmd1&cmd2中,同行的cmd1和cmd2都会被运行。
2010-10-21 15:47
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
哦?是这样的吗?我没试过,第一次听说,学习了~

现在关键问题是,怎么把命令插入到.exe里面??到底行不行得通??

这个“pause”的Hex位置是:005E10
上传的附件:
2010-10-21 17:27
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
又凉了~ 天哪!
2010-10-27 16:18
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
赚Kx很不容易啊!穷人路过······
2010-10-27 20:50
0
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
说实话-- 我看了-- 很久以前

这个 软件 生成bat时用的 WriteFile,
但是 若 说 是 楼主 单单 要 实现 防止 bat 过 多,那可 简单了 ---

写个 del *.bat /f /q  保存为 xxx.cmd
到bat目录,多了的时候执行就得了 --
2010-10-28 00:29
0
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
被你气死~
我就是不想手工删除,那会显得多余,因为批处理数量被限定了不会超出20个,超过了会自动覆盖旧文件,占的空间很小。
让每个批处理自身带有自删的命令才有意义。
2010-10-29 13:57
0
游客
登录 | 注册 方可回帖
返回
//