Q

Windows 98マシンにデュアル・ブート構成でWindows 2000をインストールしましたが,コマンド・プロンプトの表示が文字化けします(図1)。何が原因でしょうか?


図1●文字化けしたコマンド・プロンプト画面の例
A

この問題は「PROMPT」環境変数に関連する複数の要因が絡み合って発生します。「PROMPT」環境変数は,Windows 9xやWindows NT系OS(Windows NT/2000/XP)のコマンド・プロンプト起動時のプロンプト表示設定に利用されています。デフォルトではC:\AUTOEXEC.BATというファイル中で

 PROMPT $P$G

 というコマンドを実行して確認できます。値の多くはWindows 9xとWindows NT系OSで共通です。

Windows 9x/MS-DOS用の設定が Windows NT系に反映されるのが原因
 この問題の直接の原因は,Windows 9x(Windows 95/98/Me)が起動時に利用するC:\AUTOEXEC.BAT中で「PROMPT」環境変数の設定を,

 set PROMPT=$P$G

の形式で行っていると,その設定がWindows NT系OSのコマンド・プロンプト(cmd.exe)起動時の環境に反映されてしまうことにあります。Windows NT系OSのcmd.exeでは,文字に色を付けるなどエスケープ・シーケンスが動作しません。そのため,Windows 9xでエスケープ・シーケンスを利用する設定になっていると,Windows NT系OSで図1のような文字化けが発生します。

 なお,Windows NT系OSからcommand.comを起動して生成した仮想MS-DOS環境では,CONFIG.NTファイルに

 Device=%Systemroot\System32\ANSI.SYS

を追加すると,エスケープ・シーケンスが機能します。ただしWindows 9xと完全互換ではありません。

 Windows 9xはデフォルトで,PROMPTコマンドにより「PROMPT」環境変数を設定します。この方法で設定すると,通常は「PROMPT」環境変数に設定された値がcmd.exe起動時に反映されません。

 しかし,突如PROMPTコマンドによる設定が「PROMPT」環境変数に反映される現象を何回か見かけたことがあります。急にプロンプトの表示がWindows 9xと同じになったら,この現象が起きたと考えられます。根本的な対処法は不明ですが,対処法はいくつかあります。

 cmd.exeにAUTOEXEC.BAT中の環境変数の設定を反映させる必要がない場合は,MicrosoftのKnowledge Base「Q124551」(http://support.microsoft.com/support/kb/articles/q124/5/51.asp)にあるように,ParseAutoexecレジストリの値を0にして,AUTOEXEC.BATの解析を止めます。

 この対策が実施できない場合は,図2のように,Windows NT系OS側のシステム環境変数にWindows NT系OS上で利用する「PROMPT」環境変数を登録するのがよいでしょう。AUTOEXEC.BATファイル中の「PROMPT」環境変数の設定自体を修正しても構いません。


図2●システム環境変数を追加登録する
高橋基信