Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Terminal do Windows é compatível com sequências da "Barra de Progresso" do ConEmu, também conhecidas como "OSC 9;4". Essas sequências permitem que um aplicativo de linha de comando exiba uma barra de progresso na janela do terminal. Isso é útil para comandos de execução longa, como copiar arquivos grandes ou implantar aplicativos.
No Terminal do Windows, a barra de progresso é exibida em dois locais:
- No cabeçalho da guia, como um anel de progresso
- Na barra de tarefas do Windows, da mesma maneira que uma barra de progresso de download.
Pré-requisitos
- Terminal do Windows v1.6 ou posterior.
- Para a animação da barra de tarefas, você precisará garantir que "Mostrar animações no Windows" esteja habilitado em "Configurações/Facilidade de Acesso/Exibição".
Formato de sequência de barras de progresso
Para definir a barra de progresso, você precisa enviar a sequência do OSC 9;4 para o terminal. Essa sequência tem o seguinte formato:
ESC ] 9 ; 4 ; <state> ; <progress> BEL
ESC
é o caractere de escape, ASCII 27.BEL
é o caractere de sino, ASCII 7.<state>
é um dos0
,1
,2
,3
ou4
.0
é o estado padrão e indica que a barra de progresso deve estar oculta. Use esse estado quando o comando for concluído, para limpar qualquer estado de progresso.1
: defina o valor de progresso como<progress>
, no estado "padrão".2
: defina o valor de progresso como<progress>
, no estado "Erro"3
: defina a barra de tarefas como o estado "Indeterminado". Isso é útil para comandos que não têm um valor de progresso, mas ainda estão em execução. Esse estado ignora o valor<progress>
.4
: defina o valor de progresso como<progress>
, no estado "Aviso"
<progress>
é um número entre 0 e 100, inclusivo.
Exemplos
PowerShell
# Set the progress bar to 50%
Write-Host -NoNewline ([char]27 + "]9;4;1;50" + [char]7)
Ou, como alternativa, no 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");
Prompt de comando
O Prompt de Comando é um pouco mais complicado, pois ele não tem um ótimo suporte para sequências de escape. Você pode usar o comando echo
para enviar a sequência de escape, mas precisará usar caracteres ESC e BEL literais no arquivo. Elas podem ser renderizados como caixas no navegador da Web, mas devem funcionar no terminal.
<NUL set /p =]9;4;1;50
echo Started progress (normal, 50)
O exemplo acima usa o dispositivo NUL
para gravar a sequência de escape no console sem uma nova linha.
Nota: não encontrou seu shell favorito aqui? Se você descobrir, sinta-se à vontade para contribuir com uma solução para o seu shell preferido.
Windows Terminal