cmd ターミナルの言語を変更する方法 (chcp が機能しない)

cmd ターミナルの言語を変更する方法 (chcp が機能しない)

Windows ターミナルからのコマンド出力を読み取るスクリプトを作成しています。

目的は、コマンド " sc query <service_name>" を使用してコマンド ライン出力を読み取り、正規表現に基づいて、より簡潔なデータを消費してユーザーに再送信することです。

問題は、ユーザーの言語を指定すると、出力内容が完全に変わる可能性があることです。 「 」をsc query可能な限りすべての言語で解釈するスクリプトを記述すべきではありません。スクリプトを実行する前に共通言語を設定する方が、ユーザーの言語に関係なく単一の出力形式で作業できます。

検索すると最初に出てくるのは「chcp」コマンドです。しかし、私の環境では機能しません。また、コマンドが機能しない場合は、検索してもそれほど多くは見つかりません。

言語を変更する試行 (2 回) とポルトガル語で出力された出力サービスのサンプルを印刷画面で確認できます。

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

「chcp」コマンドが機能しない場合に CMD ターミナルの言語を変更するには、次の手順を試してください。

CMD ターミナルを開く: Windows コンピューターで CMD ターミナルを起動します。

言語設定を確認する: オペレーティング システムの現在の言語設定を確認します。[コントロール パネル] または [設定] に移動し、[言語] または [地域] オプションに移動します。目的の言語が既定の言語として選択されていることを確認します。

システム ロケールの変更: 言語の変更が CMD に反映されない場合は、システム ロケールを変更する必要がある可能性があります。言語設定で、「管理」または「詳細」タブを探します。「システム ロケールの変更」オプションを見つけて、目的の言語を選択します。これにより、非 Unicode プログラムの言語設定が変更されます。

コンピューターを再起動します。システム ロケールを変更した後は、コンピューターを再起動することをお勧めします。これにより、言語の変更が有効になります。

これらの手順に従うと、CMD ターミナルの言語を変更できるようになります。

関連情報