1 votos

¿Cómo centrar un texto en la salida de un lote?

<p>Estoy implementando un programa por lotes que se ejecutan algunas cosas diferentes en diferentes pasos. Para cada paso, quiero mostrar un encabezado de texto "amigable" como esta:<pre><code></code></pre><p>"Mi primer paso" es una variable que puede tener una longitud de varios.</p><p>Mi pregunta: ¿tienes un algoritmo o una función que podría volver esta cadena como salida con la cabecera de la cadena en el parámetro de entrada?</p><p>Gracias de antemano.</p><p>Saludos</p></p>

0voto

Louis Puntos 121
<p>Aquí es una cadena de lote que se muestra sus parámetros rodeados de asteriscos:<pre><code></code></pre><p>Aquí es lo que parece cuando ejecute:</p><p><a href="https://i.stack.imgur.com/ot3hj.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ot3hj.jpg" alt="image"></a></p></p>

0voto

IcedLance Puntos 26

El ancho de todos los símbolos depende de la fuente utilizada. No hay ninguna manera fácil de medir el ancho de píxel de una cadena, pero a veces no la necesita.

Línea de comandos de Windows por defecto usa Lucida Console, una fuente monoespaciada, que hace las cosas fáciles. Ejemplo de ello sería:

@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

El TAMAÑO aquí es la longitud del bloque de salida, asegúrese de que sea lo suficientemente grande para que quepan todas las líneas posibles dentro de ella.

Voy a recordar, que esta es la salida de un bonito bloque en monospace sólo.

EDIT: Solucionado el LEN de inicialización.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: