按照与本指南相同的步骤操作.我试图从bat转换为exe而不安装任何新的软件,如Bat to Exe Converter.我使用这种方法的原因是因为我工作场所中的所有机器都安装了7zip并且可以使用它,但我不允许使用主服务器上不存在的外部软件使脚本工作,以便在任何机器上兼容公司.
我有以下TEST.bat:
ECHO This is a Test bat to exe
pause
Run Code Online (Sandbox Code Playgroud)
和config.txt:
;!@Install@!UTF-8!
RunProgram="TEST.bat"
;!@InstallEnd@!
Run Code Online (Sandbox Code Playgroud)
然后我调用以下命令行(在另一个.bat中):
COPY /B "%PathTo7Zip%\7zCon.sfx" + %Config% + %Source7ZFile% %OutputFile%
Run Code Online (Sandbox Code Playgroud)
%PathTo7Zip%是7zCon.sfx
的目录%Config%是上面的config.txt文件
%Source7ZFile%是我的.7z存档,并且%OutputFile%是我的输出TEST.exe文件,应该根据指南的作者调用它时应该运行bat文件.但是,调用TEST.exe触发器解压缩.7z存档(这是预期的),然后退出而不运行TEST.bat.
然而,作者解释说:
结论:
请务必注意,虽然生成的文件与源BAT文件运行完全相同,但这不是真正的批处理到可执行转换.生成的文件是EXE,但它旨在用于自解压安装程序.当您执行生成的EXE文件时,该过程如下所示:
我使用在这个问题“Print in terminal with colours?”中找到的以下颜色类。
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print(bcolors.FAIL + "some error" + bcolors.ENDC)
Run Code Online (Sandbox Code Playgroud)
当我在我的 python 脚本编辑器中运行它时,我得到正确的红色错误颜色的输出:
some error
[Finished in 18.782s]
Run Code Online (Sandbox Code Playgroud)
但是,当我从命令提示符运行或使用 powershell(我预期的控制台输出)时,我得到以下输出:
[91msome 错误[0m
(每个“[”前都有箭头,但每次按保存时都不会显示)
更新:
这是输出的捕获:
这似乎是一种非常有吸引力的方法,因为我不必下载或导入任何新模块,只需将它包含在我的脚本中的几行中即可。这被选为最佳答案,但我无法让它工作,因为它似乎解释\033为箭头符号的一些 ASCII。