Nic*_*C34 5 batch command-line batch-file
我正在实现一个批处理程序,该程序在不同的步骤中执行一些不同的事情。对于每个步骤,我想显示一个“友好”的文本标题,如下所示:
*************************************************************
* MY FIRST STEP *
*************************************************************
Run Code Online (Sandbox Code Playgroud)
“我的第一步”是一个可以有不同长度的变量。
我的问题:您是否有一种算法或函数可以返回该字符串作为输出,并在输入参数中显示字符串标题?
提前致谢。
问候
所有符号的宽度很大程度上取决于所使用的字体。没有简单的方法来测量字符串的像素宽度,但有时您不需要它。
Windows 命令行默认使用 Lucida Console(一种等宽字体),这使事情变得简单。例子是:
@echo off
setLocal EnableDelayedExpansion
set "STR=Boom^!"
set "SIZE=50"
set "LEN=0"
:strLen_Loop
if not "!!STR:~%LEN%!!"=="" set /A "LEN+=1" & goto :strLen_Loop
set "stars=****************************************************************************************************"
set "spaces= "
call echo %%stars:~0,%SIZE%%%
set /a "pref_len=%SIZE%-%LEN%-2"
set /a "pref_len/=2"
set /a "suf_len=%SIZE%-%LEN%-2-%pref_len%"
call echo *%%spaces:~0,%pref_len%%%%%STR%%%%spaces:~0,%suf_len%%%*
call echo %%stars:~0,%SIZE%%%
endLocalRun Code Online (Sandbox Code Playgroud)
这里的 SIZE 是你想要输出的块的长度,确保它足够大以容纳其中所有可能的行。
我要提醒的是,这只会以等宽字体输出一个漂亮的块。
编辑:修复了 LEN 初始化。