Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Terminale Windows supporta le sequenze ConEmu "Indicatore di stato", note anche come "OSC 9; 4". Queste sequenze consentono a un'applicazione della riga di comando di visualizzare un indicatore di stato nella finestra del terminale. Ciò è utile per i comandi a esecuzione prolungata, ad esempio la copia di file di grandi dimensioni o la distribuzione di applicazioni.
Nel Terminale Windows, l'indicatore di stato viene visualizzato in due posizioni:
- Nell'intestazione della scheda, come anello di stato
- Nella barra delle applicazioni di Windows, nello stesso modo di un indicatore di stato del download.
Prerequisiti
- Terminale Windows versione 1.6 o successiva.
- Per l'animazione della barra delle applicazioni, è necessario assicurarsi che "Mostra animazioni in Windows" sia abilitato in "Impostazioni/Accessibilità/Visualizzazione".
Formato sequenza indicatore di stato
Per impostare l'indicatore di stato, è necessario inviare la sequenza OSC 9; 4 al terminale. Questa sequenza presenta il formato seguente:
ESC ] 9 ; 4 ; <state> ; <progress> BEL
ESC
è il carattere di escape, ASCII 27.BEL
è il carattere di controllo del segnale acustico di avviso, ASCII 7.<state>
è uno dei caratteri seguenti:0
,1
,2
,3
o4
.0
è lo stato predefinito e indica che l'indicatore di stato deve essere nascosto. Usare questo stato al termine del comando per cancellare qualsiasi stato di avanzamento.1
: imposta il valore di stato su<progress>
, nello stato "predefinito".2
: imposta il valore di stato su<progress>
, nello stato "Errore"3
: imposta la barra delle applicazioni sullo stato "Indeterminato". Ciò è utile per i comandi che non hanno un valore di stato, ma sono ancora in esecuzione. Questo stato ignora il valore<progress>
.4
: imposta il valore di stato su<progress>
, nello stato "Avviso"
<progress>
è un numero compreso tra 0 e 100 inclusi.
Esempi
PowerShell
# Set the progress bar to 50%
Write-Host -NoNewline ([char]27 + "]9;4;1;50" + [char]7)
In alternativa, in 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 dei comandi
Il prompt dei comandi è un po' più complicato, poiché non ha un ottimo supporto per le sequenze di escape. È possibile usare il comando echo
per inviare la sequenza di escape, ma è necessario usare caratteri ESC e BEL letterali nel file. Questi possono essere sottoposti a rendering come caselle nel Web browser, ma dovrebbero funzionare nel terminale.
<NUL set /p =]9;4;1;50
echo Started progress (normal, 50)
L'esempio precedente usa il dispositivo NUL
per scrivere la sequenza di escape nella console senza una nuova riga.
Nota: la shell preferita non è indicata qui? Se lo si scopre, è possibile contribuire a una soluzione per la shell preferita.