「スタート」「アクセサリ」にあるコマンドプロンプトのリンク先は、\Windows\system32\cmd.exeになっていますが、同一フォルダ内を調べるとcommand.comがあります。どちらでもMS−DOS環境が起動します。
何故MS−DOS環境が2つあるのでしょうか。
図1 コマンドプロンプトのリンク先のフォルダ内
違いを確認するため、「ファイル名を指定して実行(R)」でcmd.exeとcommand.comを実行してみました。
図2 WindowsXPでファイル名を指定して実行する方法
図3 各々指定したファイル名
図4 DOS窓が起動した状態
command.comの起動時、cmd.exe(コマンド・プロンプト)には無いかな漢字変換のデバイス・ドライバの登録画面が表示されました。しかし、comman.com, cmd.exe 双方漢字変換は可能です。また、comman.comは一見ロングファイル名がきちんと表示されないように見えますが、dirコマンドを実行すれば問題なく表示されます。
表1 各DOS窓内のメモリ割り当て状況
DOS窓種類 | MEM /Pの実行結果 | MEM /Dの実行結果 | MEM /Cの実行結果 |
cmd.exe | memp_cmd.txt | memd_cmd.txt | memc_cmd.txt |
command.com | memp_command.txt | memd_command.txt | memc_command.txt |
(1)プロセスの取り扱い
タスクマネージャで起動プロセスを確認してみました。(表2)
表2 各DOS窓起動によるプロセス
DOS窓種類 | タスクマネージャのプロセス・イメージ名 |
cmd.exe | CMD.EXE |
command.com | NTVDM.EXE |
cmd.exeはファイル名そのままのプロセス・イメージ名となっています。しかし、command.comのプロセス・イメージ名はNTVDM.EXEとなっており、MS−DOS仮想モード・プロセスが立ち上がります。
※NTVDMは、NT Virtual Dos Machineと呼ぶ。
cmd.exeで昔ながらのedlin(MS−DOSコマンド)を起動してみると、NTVDM.EXEが起動し、逆に、command.comでedlinを起動してみると、cmd.exeが起動するようです。cmd.exeの動作がイマイチわかりません。(別途調査)
(2)32bitプログラムのタスクの取り扱い
MS−DOS環境からWindowsの電卓(calc.exe, 32bit-program)を起動してみると、タスク処理に次の違いがありました。
・cmd.exe プロンプト(コマンドラインの入力カーソル)が帰ってくる。
・command.com プロンプトが帰ってこない。
図5 cmd.exeの32bit-programタスク処理
図6 command.comの32bit-programタスク処理
なお、command.comのプロンプトは電卓を終了することで戻ってきます。
(3)Windowsによる終了
DOS窓を「×」で閉じてみると、cmd.exeは終了しますが、command.comは強制終了モードの確認画面が表示されました。
図7 command.comの「×」による終了(Windowsタスクからの終了)
cmd.exe(コマンドプロンプト)は、MS−DOSの環境が手軽に利用可能で、Windowsと協調性があるマルチタスク処理用の環境に準備されているものであり、一方、command.comは処理手順やこれまでのMS−DOSとの互換性を重視したシングルタスク処理用の環境に準備されているものであると考えられます。
ただ、一般ユーザーからは意識して使い分けることは必要なく、普通はコマンドプロンプトの利用で十分です。