Как изменить язык терминала cmd (chcp не работает)

Как изменить язык терминала cmd (chcp не работает)

Я пишу скрипт, который отвечает за чтение вывода команд из терминала Windows.

Цель состоит в том, чтобы прочитать вывод командной строки с помощью команды " sc query <service_name>" и на основе регулярного выражения потребить и повторно отправить пользователю более краткие данные.

Проблема в том, что с учетом языка пользователя содержимое вывода может полностью измениться. Мне не следует писать скрипт, который будет интерпретировать " sc query" на всех возможных языках. Лучше задать общий язык перед запуском скрипта, чтобы я мог работать с одним форматом вывода, независимо от языка пользователя.

Первое, что приходит при поиске, это chcpкоманда " ". Но она у меня не работает, и это не намного дальше при поиске, когда команда не работает.

Вы можете проверить на снимке экрана мои попытки изменить язык (дважды) и пример выходного сервиса, выведенного на португальском языке.

Пример вывода эксперимента по изменению языка cmd с помощью chcp:

введите описание изображения здесь

Что мне нужно сделать? Есть ли другой способ изменить язык cmd или мне нужно сделать что-то еще, чтобы команда chcpзаработала?

решение1

введите описание изображения здесь

введите описание изображения здесь

Что вы имеете в виду, я не имею ни малейшего понятия, но я понимаю, что вывод SCкоманды будет на английском языке в элементах, описывающих состояние процессов на любом языке системы, поэтому я предлагаю сделать что-то, что будет перехватывать вывод предиктивным образом для возможных состояний и преобразовывать/переводить на желаемый язык.

решение2

CHCPменяет кодировку, а не язык. Для этого нет команды. Если вы установили несколько языков, у вас есть значок для смены языка в области системных уведомлений.

Так что эта команда не делает то, что я думаю. Почему она не делает то, что я думаю?

решение3

Мой предложенный подход, найденный вТАК ответ на связанный вопрос, этонацеливаться на очень конкретные вещи, которые не зависят от локали. В этом случае для получения статуса службы из 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

Чтобы изменить язык терминала CMD, если команда «chcp» не работает, попробуйте выполнить следующие действия:

Откройте терминал CMD: Запустите терминал CMD на компьютере Windows.

Проверьте языковые настройки: Подтвердите текущие языковые настройки вашей операционной системы. Перейдите в «Панель управления» или «Настройки» и перейдите к параметрам «Язык» или «Регион». Убедитесь, что нужный язык выбран в качестве языка по умолчанию.

Изменить локаль системы: Если изменение языка не отражается в CMD, вам может потребоваться изменить локаль системы. В языковых настройках найдите вкладку «Администрирование» или «Дополнительно». Найдите опцию «Изменить локаль системы» и выберите нужный язык. Это изменит языковые настройки для программ, не поддерживающих Unicode.

Перезагрузите компьютер: После изменения локали системы рекомендуется перезагрузить компьютер. Это гарантирует, что изменения языка вступят в силу.

Выполнив эти шаги, вы сможете изменить язык терминала CMD.

Связанный контент