[原创教程] 将批处理bat转成exe, AU3版

  2018年07月06日  深蓝  10736 阅读 Tag:au3batexe 教程

最近有些朋友问我, 如何将BAT转成EXE,并且不显示黑框。

这可以有多种方法,比如网上下载现成的转换程序,或者用AU3写代码来编译,两者原理都是一样,只不过自己写代码稍麻烦,但是安全写的什么自己都了解,同时还可以学习一些东西,不是很好吗?

现成的程序下载就不说了,我们这里说说高级一点点的用将BAT转成AU3。其中直接将BAT代码转成AU3代码我们也不说了,因为那样等于你会了写AU3,比如将 md 转成 au3的函数,DirCreate。

我们来说将bat现成的代码直接在au3中使用。

下载au3安装:Autoit3 - 3.3.9.0 深蓝打包 一直在用自解压版。

方法1,打包法

将写好的BAT打包进AU3,使用释放,用完删除。适合较大的BAT文件。这个方法简单实用。

#include <Process.au3>
FileInstall("test.bat",@TempDir & "\temp999.bat",1)
_rundos("call " & @TempDir & "\temp999.bat")

 

代码就两行"test.bat" 是你要打包的bat, "@TempDir & "\temp999.bat" 是运行时将这个BAT释放到临时目录,文件名是 temp999.bat,可以自行改。

第二行是运行释放后的BAT,按F7编译即可。目录结构如下:

QQ截图20180706211910.png

 

方法二,一行一行代码替换法。

不用打包文件,直接将BAT放到AU3中,好处不用释放BAT文件,但缺点是对于复杂的BAT文件,将无法正确的上下文关系,比如带FOR的。

如我们有三行批处理代码

rd c:\1
md c:\1
start c:\22.exe

我们在AU3中写到


#include <Process.au3>

FileInstall("test.bat",@TempDir & "\temp999.bat",1)
_rundos("rd c:\1")
_rundos("md c:\1")
_rundos("start c:\22.exe")

然后按F1编译即可。

是不是很简单?

希望由此可以引申出你的AU3学习之路,,会发现越来越有趣,举一反三,而不只是学会在AU3中打包和释放BAT文件。

我们留个课后思考,如何在第一种方法释放了bat文件后,运行完成,将他删除。

 

更新1,有朋友反应托盘有AU3图标,只要在第一行加上以下代码就好。

#NoTrayIcon

 

更新2,BAT文件运行完后如何自动删除。

保要在要打包的BAT文件的最后一行加上

del %0

更新3,EXE运行如何删除自身。在au3代码的最后加上。

Run('cmd.exe /c ping -n 3 127.1 & del /q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE)

 


      我的工单留言列表与站长回复 . 共有留言: 36 条