Partager via


Tutoriel : Définir la barre de progression dans le terminal Windows

Le terminal Windows prend en charge les séquences ConEmu « Progress Bar », également connues sous le nom de « OSC 9;4 ». Ces séquences permettent à une application de ligne de commande d'afficher une barre de progression dans la fenêtre du terminal. Ceci est utile pour les commandes à exécution longue, telles que la copie de fichiers volumineux ou le déploiement d'applications.

Dans le Terminal Windows, la barre de progression s'affiche à deux endroits :

  • Dans l'en-tête de l'onglet, comme anneau de progression
  • Dans la barre des tâches Windows, de la même manière qu'une barre de progression de téléchargement.

Exemple d’anneau de progression dans l’en-tête de l’onglet

Prérequis

  • Terminal Windows v1.6 ou version ultérieure.
  • Pour l'animation de la barre des tâches, vous devrez vous assurer que « Afficher les animations sous Windows » est activé dans « Paramètres / Facilité d'accès / Affichage ».

Format de séquence de barre de progression

Pour définir la barre de progression, vous devez envoyer la séquence OSC 9;4 au terminal. Cette séquence a le format suivant :


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

  • ESC est le caractère d'échappement, ASCII 27.
  • BEL est le caractère de cloche, ASCII 7.
  • <state> est l'un des 0, 1, 2, 3, ou 4.
    • 0 est l'état par défaut et indique que la barre de progression doit être masquée. Utilisez cet état lorsque la commande est terminée pour effacer tout état de progression.
    • 1 : définissez la valeur de progression sur <progress>, dans l'état "par défaut".
    • 2 : définir la valeur de progression sur <progress>, dans l'état "Erreur"
    • 3 : mettez la barre des tâches à l'état "Indéterminé". Ceci est utile pour les commandes qui n'ont pas de valeur de progression, mais qui sont toujours en cours d'exécution. Cet état ignore la valeur <progress>.
    • 4 : définissez la valeur de progression sur <progress>, dans l'état "Avertissement"
  • <progress> est un nombre compris entre 0 et 100 inclus.

Exemples

PowerShell

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

Ou bien, dans 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");

Invite de commandes

L'invite de commande est un peu plus délicate, car elle ne prend pas vraiment en charge les séquences d'échappement. Vous pouvez utiliser la commande echo pour envoyer la séquence d'échappement, mais vous devrez utiliser les caractères ESC et BEL littéraux dans le fichier. Ceux-ci peuvent être affichés sous forme de zones dans le navigateur Web, mais ils devraient fonctionner dans le terminal.

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

L'exemple ci-dessus utilise le périphérique NUL pour écrire la séquence d'échappement sur la console sans nouvelle ligne.

Remarque : vous ne voyez pas votre interpréteur de commandes favori ici ? Dans ce cas, n’hésitez pas à contribuer à l’ajout d’une solution d’une solution pour l’interpréteur de commandes de votre choix !