cmd 터미널의 언어를 변경하는 방법(chcp가 작동하지 않습니다)

cmd 터미널의 언어를 변경하는 방법(chcp가 작동하지 않습니다)

Windows 터미널에서 명령 출력을 읽는 스크립트를 작성 중입니다.

목적은 " sc query <service_name>" 명령을 사용하여 명령줄 출력을 읽고 정규식을 기반으로 보다 간결한 데이터를 소비하고 사용자에게 다시 보내는 것입니다.

문제는 사용자 언어에 따라 출력 내용이 완전히 바뀔 수 있다는 것입니다. 가능한 모든 언어로 " "를 해석하는 스크립트를 작성해서는 안 됩니다 sc query. 스크립트를 실행하기 전에 공통 언어를 설정하는 것이 더 좋습니다. 그러면 사용자 언어에 관계없이 단일 출력 형식으로 작업할 수 있습니다.

검색할 때 가장 먼저 나오는 것은 " chcp" 명령이다. 그러나 그것은 나에게는 작동하지 않으며 명령이 작동하지 않는 경우를 검색하면 더 이상 그렇지 않습니다.

언어 변경(2회) 시도와 포르투갈어로 출력된 출력 서비스 샘플을 인쇄 화면에서 확인할 수 있습니다.

chcp로 cmd 언어를 변경하는 시도의 샘플 출력:

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

내가 해야하는 것? cmd 언어를 변경하는 다른 방법이 있습니까? 아니면 chcp명령이 작동하도록 하려면 다른 작업을 수행해야 합니까?

답변1

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

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

염두에 두고 있는 것이 무엇인지는 모르겠지만 SC명령의 출력은 시스템의 언어에 관계없이 프로세스 상태를 설명하는 항목에서 영어로 발생한다는 것을 이해합니다. 출력을 가로채는 작업을 수행하는 것이 좋습니다. 가능한 상태를 예측하는 방식으로 원하는 언어로 변환/번역합니다.

답변2

CHCP언어가 아닌 인코딩을 변경합니다. 그렇게 하라는 명령은 없습니다. 여러 언어를 설치한 경우 시스템 알림 영역에 언어를 변경할 수 있는 아이콘이 있습니다.

그래서 이 명령은 제가 생각하는 대로 작동하지 않습니다. 왜 내가 생각하는 대로 되지 않는 걸까?

답변3

내가 제안한 접근 방식은SO 관련 질문에 대한 답변, 는로케일에 독립적인 매우 구체적인 것을 목표로 삼습니다.. 이 경우 에서 서비스 상태를 얻기 위한 sc.exe목표는 상태를 식별하는 정수(활성 언어와 독립적이므로 견고함)를 얻는 것입니다.

간단한 예(링크된 답변의 추가 세부정보):

for /F "skip=3 tokens=3" %%i in ('""%windir%\system32\sc.exe" query "W32Time" 2^>nul"') do (
  if "%%i"=="4" (
    echo 'W32Time' service is running
    goto :SkipRemainingIterations
  )
)
:SkipRemainingIterations

답변4

"chcp" 명령이 작동하지 않을 때 CMD 터미널의 언어를 변경하려면 다음 단계를 시도해 보세요.

CMD 터미널 열기: Windows 컴퓨터에서 CMD 터미널을 실행합니다.

언어 설정 확인: 운영 체제의 현재 언어 설정을 확인합니다. "제어판" 또는 "설정"으로 이동하여 "언어" 또는 "지역" 옵션으로 이동합니다. 원하는 언어가 기본 언어로 선택되어 있는지 확인하십시오.

시스템 로케일 수정: 언어 변경이 CMD에 반영되지 않으면 시스템 로케일을 수정해야 할 수도 있습니다. 언어 설정에서 "관리" 또는 "고급" 탭을 찾으세요. "시스템 로캘 변경" 옵션을 찾아 원하는 언어를 선택하세요. 유니코드가 아닌 프로그램의 언어 설정이 변경됩니다.

컴퓨터 다시 시작: 시스템 로캘을 수정한 후 컴퓨터를 다시 시작하는 것이 좋습니다. 이렇게 하면 언어 변경 사항이 적용됩니다.

다음 단계를 수행하면 CMD 터미널의 언어를 변경할 수 있습니다.

관련 정보