다음을 통해 공유


자습서: Windows 터미널의 진행률 표시줄 설정

Windows 터미널은 "OSC 9;4"라고도 하는 ConEmu "진행률 표시줄" 시퀀스를 지원합니다. 이러한 시퀀스를 사용하면 명령줄 애플리케이션이 터미널 창에 진행률 표시줄을 표시할 수 있습니다. 이 기능은 대용량 파일 복사 또는 애플리케이션 배포와 같은 장기 실행 명령에 유용합니다.

Windows 터미널에서 진행률 표시줄은 다음 두 위치에 표시됩니다.

  • 탭 머리글에서 진행률 링으로
  • Windows 작업 표시줄에서 다운로드 진행률 표시줄과 동일한 방식으로

진행률 링의 예는 탭 헤더의 모양입니다.

필수 조건

  • Windows 터미널 v1.6 이상
  • 작업 표시줄 애니메이션의 경우 "Windows에서 애니메이션 표시"가 "설정/접근성/표시"에서 사용하도록 설정되어 있는지 확인해야 합니다.

진행률 표시줄 시퀀스 형식

진행률 표시줄을 설정하려면 OSC 9;4 시퀀스를 터미널로 보내야 합니다. 이 시퀀스의 형식은 다음과 같습니다.


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

  • ESC는 이스케이프 문자 ASCII 27입니다.
  • BEL은 벨 문자 ASCII 7입니다.
  • <state>0, 1, 2, 3 또는 4 중 하나입니다.
    • 0은 기본 상태이며 진행률 표시줄을 숨겨야 임을 나타냅니다. 이 명령이 완료되면 이 상태를 사용하여 진행 상태를 지울 수 있습니다.
    • 1: 진행률 값을 "기본" 상태의 <progress>로 설정합니다.
    • 2: 진행률 값을 "오류" 상태의 <progress>로 설정합니다.
    • 3: 작업 표시줄을 "미확정" 상태로 설정합니다. 이 상태는 진행률 값이 없지만 여전히 실행 중인 명령에 유용합니다. 이 상태는 <progress> 값을 무시합니다.
    • 4: 진행률 값을 "경고" 상태의 <progress>로 설정합니다.
  • <progress>는 0~100 사이의 숫자입니다.

예제

PowerShell

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

또는 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");

명령 프롬프트

명령 프롬프트는 이스케이프 시퀀스를 제대로 지원하지 않으므로 좀 더 까다롭습니다. echo 명령을 사용하여 이스케이프 시퀀스를 보낼 수 있지만 파일에서 리터럴 ESC 및 BEL 문자를 사용해야 합니다. 웹 브라우저에서 상자로 렌더링될 수 있지만 터미널에서 작동해야 합니다.

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

위의 예제에서는 NUL 디바이스를 사용하여 줄 바꿈 없이 콘솔에 이스케이프 시퀀스를 씁니다.

참고: 즐겨찾는 셸이 여기에 표시되지 않나요? 당신이 그것을 알아 내는 경우, 원하는 셸에 대한 솔루션을 기여 주시기 바랍니다!