배치 스크립트에서 더 많은 색상을 사용할 수 있나요?

배치 스크립트에서 더 많은 색상을 사용할 수 있나요?

이미 16가지 색상이 있습니다.

0 = Black       8 = Gray
1 = Blue        9 = Light Blue
2 = Green       A = Light Green
3 = Aqua        B = Light Aqua
4 = Red         C = Light Red
5 = Purple      D = Light Purple
6 = Yellow      E = Light Yellow
7 = White       F = Bright White

하지만 배치 파일에서 더 많은 색상을 사용하고 싶습니다

도움이 필요하세요?

답변1

Windows 배치 파일에서 16가지 색상을 더 사용할 수 있나요?

아니요. 대부분의 Windows 앱은 16가지 색상만 지원합니다.

그러나 Windows 10 Insiders Build #14931에서는 Windows 콘솔이 24비트 RGB 트루 컬러를 지원하도록 업데이트되었습니다.

불행하게도 위에서 언급한 것처럼 대부분의 Windows 앱은 (아직) 이 향상된 기능을 사용할 수 없습니다.

그러나 WSL(Linux용 Windows 하위 시스템)을 사용하면 Linux 스크립트 및 도구에서 콘솔의 새로운 24비트 색상 지원을 사용할 수 있습니다.

우리가 가장 자주 받는 요청 중 하나는 Windows 콘솔이 지원할 수 있는 색상 수를 늘려달라는 것입니다. 우리는 귀하가 요청하는 기능을 제공하는 것 이상을 좋아하지 않습니다!

그러나 Windows 10 Insiders Build #14931에서는 색상을 몇 개 더 추가하거나 콘솔을 256가지 색상으로 제한하는 대신

완전하고 멋진 24비트 RGB 트루 컬러를 지원하도록 Windows 콘솔을 업데이트했습니다!

대부분의 Windows 앱은 최대 16가지 색상만 지원하는 반면 Linux 세계에서는 한동안 256가지 색상 터미널을 광범위하게 지원했으며 24비트 색상이 더욱 확립되고 있기 때문에 실제로 시연하기가 약간 까다롭습니다.

WSL(Linux용 Windows 하위 시스템) 위에 있는 Windows 환경의 Ubuntu에서 새로운 Bash를 사용하여 Linux 앱과 스크립트를 실행할 수 있는 기능 덕분에 일부 Linux 스크립트와 도구를 사용하여 콘솔의 새로운 24비트 색상 지원을 시연할 수 있습니다.

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

우리는 콘솔의 새로운 색상 렌더링 기능을 지원하기 위해 콘솔 속성 페이지를 개선하기 위한 작업을 아직 시작하지 않았으며 기본 Windows 색상 매핑을 수정하지 않았습니다. 우리는 여기와 향후 빌드의 백로그에 대기 중인 수많은 다른 기능을 개선할 것입니다.

원천Windows 콘솔의 24비트 컬러! | 개발자를 위한 Windows 명령줄 도구

답변2

윈도우 10 conhost.exe지원합니다ANSI 이스케이프 코드24비트 색상을 포함합니다. 보다

그러나 현재는 다음을 수행해야 합니다.ANSI 시퀀스 지원 활성화VirtualTerminalLevelin 이라는 이름의 DWORD를 생성하여HKEY_CURRENT_USER\Console그 값을 1로 설정합니다. 그런 다음 bash에서 24비트 색상이 지원되면 모든 cmd 또는 PowerShell 세션에서 24비트 ANSI 색상을 사용할 수도 있습니다. 아래는 cmd 예시입니다

echo ESC[38;2;40;177;249m color: 40;177;249 ESC[0m
echo ESC[38;2;255;255;100m color: 255;255;100
echo ESC[48;2;200;0;200m color: 200;0;200 ESC[0m

안타깝게도 여기에 원시 이스케이프 문자를 붙여넣을 수 없으므로 ESC실제 이스케이프 문자(ASCII 27/0x1B) 로컬로. 샘플 출력은 다음과 같습니다.

cmd 24비트 색상

PowerShell에서는 원시 이스케이프 문자를 붙여넣는 방법을 확인하지 않고 이스케이프 문자를 , 또는 로 [char]0x1B포함 하는 것이 더 쉽습니다 [char]27.`u{001B}`e

echo "$([char]0x1B)[38;2;40;177;249m color: 40;177;249 $([char]0x1B)[0m"
echo "$([char]0x1B)[38;2;255;255;100m color: 255;255;100"
echo "$([char]0x1B)[48;2;200;0;200m color: 200;0;200 $([char]0x1B)[0m"

powershell 24비트 색상

당신은 또한 확인할 수 있습니다Windows 배치 파일에서 ANSI 호환 콘솔 감지현재 콘솔에 따라 4비트 또는 24비트 컬러를 인쇄합니다. PowerShell에서는 훨씬 간단합니다.$Host.UI.SupportsVirtualTerminal

보다win32 콘솔이 ANSI/VT100 이스케이프 시퀀스를 인식하도록 만드는 방법은 무엇입니까?

관련 정보