Compartir a través de


Tutorial: Establezca la barra de progreso en el Terminal Windows

El Terminal Windows admite las secuencias "Barra de progreso" de ConEmu, también conocidas como "OSC 9;4". Estas secuencias permiten que una aplicación de línea de comandos muestre una barra de progreso en la ventana del terminal. Esto es útil para comandos de ejecución prolongada, como copiar archivos grandes o implementar aplicaciones.

En el Terminal Windows, la barra de progreso se muestra en dos lugares:

  • En el encabezado de pestaña, como anillo de progreso
  • En la barra de tareas de Windows, de la misma manera que una barra de progreso de descarga.

Ejemplo de anillo de progreso en el encabezado de la pestaña

Requisitos previos

  • Terminal Windows v1.6 o posterior.
  • Para la animación de la barra de tareas, debe asegurarse de que "Mostrar animaciones en Windows" esté habilitada en la sección "Configuración/Accesibilidad/Pantalla".

Formato de secuencia de barra de progreso

Para establecer la barra de progreso, debe enviar la secuencia OSC 9;4 al terminal. Esta secuencia tiene el siguiente formato:


ESC ] 9 ; 4 ; <state> ; <progress> BEL

  • ESC es el carácter de escape, ASCII 27.
  • BEL es el carácter de campana, ASCII 7.
  • <state> es uno de 0, 1, 2, 3 o 4.
    • 0 es el estado predeterminado e indica que la barra de progreso debe estar oculta. Use este estado cuando se complete el comando para borrar cualquier estado de progreso.
    • 1: establezca el valor de progreso en <progress>, en el estado "Predeterminado".
    • 2: establezca el valor de progreso en <progress>, en el estado "Error".
    • 3: establezca la barra de tareas en el estado "Indeterminado". Esto es útil para los comandos que no tienen un valor de progreso, pero que siguen ejecutándose. Este estado omite el valor <progress>.
    • 4: establezca el valor de progreso en <progress>, en el estado "Advertencia".
  • <progress> es un número comprendido entre 0 y 100, ambos incluidos.

Ejemplos

PowerShell

# Set the progress bar to 50%
Write-Host -NoNewline ([char]27 + "]9;4;1;50" + [char]7)

O bien, como alternativa, en PowerShell 7:

# Set the progress bar to 50%
Write-Host -NoNewline ("`e]9;4;1;50`a")

Bash

# Set the progress bar to 50%
echo -ne "\033]9;4;1;50\a"

C#

// Set the progress bar to 50%
Console.Write("\x1b]9;4;1;50\x07");

Símbolo del sistema

El símbolo del sistema es un poco más complicado, ya que no tiene gran compatibilidad con las secuencias de escape. Puede usar el comando echo para enviar la secuencia de escape, pero deberá usar caracteres ESC y BEL literales en el archivo. Estos pueden representarse como cuadros en el explorador web, pero deben funcionar en el terminal.

<NUL set /p =]9;4;1;50 
echo Started progress (normal, 50)

En el ejemplo anterior se usa el dispositivo NUL para escribir la secuencia de escape en la consola sin una nueva línea.

Nota: ¿No ve su shell favorito aquí? Si lo averigua, no dude en contribuir a una solución para su shell preferido.