Windows ターミナルからのコマンド出力を読み取るスクリプトを作成しています。
目的は、コマンド " sc query <service_name>
" を使用してコマンド ライン出力を読み取り、正規表現に基づいて、より簡潔なデータを消費してユーザーに再送信することです。
問題は、ユーザーの言語を指定すると、出力内容が完全に変わる可能性があることです。 「 」をsc query
可能な限りすべての言語で解釈するスクリプトを記述すべきではありません。スクリプトを実行する前に共通言語を設定する方が、ユーザーの言語に関係なく単一の出力形式で作業できます。
検索すると最初に出てくるのは「chcp
」コマンドです。しかし、私の環境では機能しません。また、コマンドが機能しない場合は、検索してもそれほど多くは見つかりません。
言語を変更する試行 (2 回) とポルトガル語で出力された出力サービスのサンプルを印刷画面で確認できます。
chcp による cmd 言語の変更の試行のサンプル出力:
何をする必要がありますか? コマンド言語を変更する他の方法がありますか、またはコマンドをchcp
機能させるために何か他のことを行う必要がありますか?
答え1
答え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 ターミナルの言語を変更できるようになります。