Bagikan melalui


Tutorial: Mengatur bilah kemajuan di Terminal Windows

Terminal Windows mendukung urutan "Progress Bar" ConEmu, juga dikenal sebagai "OSC 9; 4". Urutan ini memungkinkan aplikasi baris perintah untuk menampilkan bilah kemajuan di jendela terminal. Ini berguna untuk perintah jangka panjang, seperti menyalin file besar atau menyebarkan aplikasi.

Di Terminal Windows, bilah kemajuan ditampilkan di dua tempat:

  • Di header tab, sebagai cincin kemajuan
  • Di taskbar Windows, dengan cara yang sama seperti bilah kemajuan unduhan.

Contoh seperti apa kemajuan melingkari header tab

Prasyarat

  • Terminal Windows v1.6 atau yang lebih baru.
  • Untuk animasi taskbar, Anda harus memastikan "Tampilkan animasi di Windows" diaktifkan di "Pengaturan / Kemudahan Akses / Tampilan".

Format urutan bilah kemajuan

Untuk mengatur bilah kemajuan, Anda perlu mengirim OSC 9; 4 urutan ke terminal. Urutan ini memiliki format berikut:


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

  • ESC adalah karakter escape, ASCII 27.
  • BEL adalah karakter bel, ASCII 7.
  • <state> adalah salah satu dari 0, 1, 2, 3, atau 4.
    • 0 adalah status default, dan menunjukkan bahwa bilah kemajuan harus disembunyikan. Gunakan status ini ketika perintah selesai, untuk menghapus status kemajuan apa pun.
    • 1: atur nilai kemajuan ke <progress>, dalam status "default".
    • 2: atur nilai kemajuan ke <progress>, dalam status "Kesalahan"
    • 3: atur taskbar ke status "Tidak ditentukan". Ini berguna untuk perintah yang tidak memiliki nilai kemajuan, tetapi masih berjalan. Status ini mengabaikan <progress> nilai.
    • 4: atur nilai kemajuan ke <progress>, dalam status "Peringatan"
  • <progress> adalah angka antara 0 dan 100, inklusif.

Contoh

PowerShell

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

Atau, atau, di 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");

perintah

Command Prompt sedikit lebih sulit, karena tidak memiliki dukungan besar untuk urutan escape. Anda dapat menggunakan echo perintah untuk mengirim urutan escape, tetapi Anda harus menggunakan karakter ESC dan BEL harfiah dalam file. Ini mungkin dirender sebagai kotak di browser web, tetapi harus berfungsi di terminal.

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

Contoh di atas menggunakan NUL perangkat untuk menulis urutan escape ke konsol tanpa garis baru.

Catatan: Tidak melihat shell favorit Anda di sini? Jika Anda mengetahuinya, jangan ragu untuk berkontribusi solusi untuk shell pilihan Anda!