Windows 터미널에서 명령 출력을 읽는 스크립트를 작성 중입니다.
목적은 " sc query <service_name>
" 명령을 사용하여 명령줄 출력을 읽고 정규식을 기반으로 보다 간결한 데이터를 소비하고 사용자에게 다시 보내는 것입니다.
문제는 사용자 언어에 따라 출력 내용이 완전히 바뀔 수 있다는 것입니다. 가능한 모든 언어로 " "를 해석하는 스크립트를 작성해서는 안 됩니다 sc query
. 스크립트를 실행하기 전에 공통 언어를 설정하는 것이 더 좋습니다. 그러면 사용자 언어에 관계없이 단일 출력 형식으로 작업할 수 있습니다.
검색할 때 가장 먼저 나오는 것은 " chcp
" 명령이다. 그러나 그것은 나에게는 작동하지 않으며 명령이 작동하지 않는 경우를 검색하면 더 이상 그렇지 않습니다.
언어 변경(2회) 시도와 포르투갈어로 출력된 출력 서비스 샘플을 인쇄 화면에서 확인할 수 있습니다.
chcp로 cmd 언어를 변경하는 시도의 샘플 출력:
내가 해야하는 것? cmd 언어를 변경하는 다른 방법이 있습니까? 아니면 chcp
명령이 작동하도록 하려면 다른 작업을 수행해야 합니까?
답변1
답변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 터미널의 언어를 변경할 수 있습니다.