A largura de todos os símbolos depende muito da fonte usada. Não há uma maneira fácil de medir a largura de pixels de uma string, mas às vezes você não precisa dela.
A linha de comando do Windows, por padrão, usa o Lucida Console, uma fonte monoespaçada, que facilita as coisas. Exemplo seria:
@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%%%
endLocal
SIZE aqui é o comprimento do bloco que você deseja imprimir, verifique se ele é grande o suficiente para caber em todas as linhas possíveis dentro dele.
Eu lembrarei que isso produzirá um bloco bonito apenas em fontes monoespaçadas.
EDIT: Corrigida a inicialização do LEN.