Я пишу скрипт, который отвечает за чтение вывода команд из терминала 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.