需求
我们在日常运行第三方的脚本的时候经常看到非常炫酷的启动logo,比如下图:
不仅美观,而且可以展示品牌和团队标志,提高曝光度。下面详细介绍一下如何用纯batch脚本实现上述效果(powershell、shell可以通过here-string实现不在讨论之列),如果有更好的实现方案也可以在评论区中指出。
知识点
- 如何获取logo图片字符串;
- 如何将含有转义字符的字符串打印到控制台;
- batch实现字符串base64编解码;
具体实现
首先解决第一个问题:logo字符串的获取。像上述字符串其实是文字logo
衍生而来的,查阅相关资料,得知一个网站可以生成这种字符串。
输入文字后可以预览各种字体效果,点击select©获取生成的字符串。
不幸的是这个字符串无法通过echo命令直接打印在控制台,因为其中含有数量不定的转义字符需要处理。通过实验发现可以把字符粘贴到文件中,然后用type命令打印文件。受此启发,我们可以将字符串先进行base64编码,然后用echo命令输出到临时文件中,再用batch的base64解码工具进行解码,最终打印到屏幕上。
下面是最终的实现代码(字符串转base64的网站非常多,这里不介绍了):
@echo off & cd /d %~dp0
mode con cols=100
call :showLogo
pause
exit
:showLogo
if not exist .outlogo (
echo CiAgX18gICAgICAgX19fX18gICAgIF9fX19fXyAgICAgIF9fX19fICAgIAogL1xfXCAgICAgKSBfX18gKCAgIC9fL1xfX19cICAgICkgX19fICggICAKKCAoICggICAgLyAvXF8vXCBcICApICkgX19fLyAgIC8gL1xfL1wgXCAgCiBcIFxfXCAgLyAvXy8gKF9cIFwvXy8gLyAgX19fIC8gL18vIChfXCBcIAogLyAvIC9fX1wgXCApXy8gLyAvXCBcIFxfL1xfX1xcIFwgKV8vIC8gLyAKKCAoX19fX18oXCBcL19cLyAvICApXykgIFwvIF8vIFwgXC9fXC8gLyAgCiBcL19fX19fLyApX19fX18oICAgXF9cX19fXy8gICAgKV9fX19fKCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK>.logo
certutil -decode .logo .outlogo>nul
del .logo
)
type .outlogo
goto :eof