TL; DR
32ビットのコンソールプログラムを実行するとcmd
、; によって実行されます。16ビットコンソールプログラムを実行すると、によって実行されcommand
ます。
詳細
Windows XPには、古い16ビットアプリケーションをサポートするサブシステムが含まれています。
古い16ビットアプリケーションは、DOSプログラムとWindowsプログラムの両方として使用できます。DOSプログラムは本来、コンソールアプリケーションであり、コマンドプロンプトのように表示されます。ただし、32ビットWindowsコンソールアプリケーションは非常に似ており、同じように見えます。
コマンドプロセッサ/インタプリタにcmd
はいくつかの目的があります。
- 32ビットテキストのWindowsコンソールプログラムを実行するには
- 提供し、様々なコマンドライン機能を処理するために(
dir
、copy
等)
- バッチファイルの解釈と実行(DOS互換
.bat
ファイルとNT互換.cmd
ファイル)
古い16ビットコンソールプログラムを実行すると、NTVDM(Windows NT Virtual DOS Machine)によって実行されます。エミュレートされたDOSシステム(仮想DOSマシン)を提供しますが、これは専用の仮想マシンソフトウェアの実行に似ていますが、エミュレーションレイヤーがより単純です。command
16ビットバージョンのコマンドインタープリターcmd.exe
は、実際にはWindowsプログラムである(そしてcommand.com
、DOS MZヘッダーとは異なり、Windows PEヘッダーを持つ)よりも実際のDOSに非常に近いです。
command
cmd
16ビットプログラムのみをサポートすること以外は同じ目的です。さらに、.cmd
ファイルをサポートせず、組み込みコマンドが少なく、構文がより制限されています(4DOScmd
と同様、より新しく、より現代的で、より高度なコマンドラインインタープリターです)。
ただし、グラフィカルなDOSプログラム(古いゲームなど)をサポートしていますが、それらを実行できるかどうかは、ビデオカードドライバーとプログラムの性質によって異なります。DOSゲームをWindowsで実行するためのさまざまなトリックを提供するサイトが多数あります(ただし、Vista以降での成功は通常XPよりも制限されます)。
Windowsの64ビットバージョンは16ビットプログラムのサポートを完全にドロップしているため、まったく含めないcommand
ため、DOSもWindows 16ビットプログラムも実行されず、代わりに(誤解を招く)エラーメッセージがスローされることに注意してください。。
テクニカルノート
command.com
.com
DOSプログラムとの後方互換性のための拡張機能がありますが、外部DOSコマンドの他のほとんどのWindowsバージョンと同様に、内部的には実際にはWindows PE .exe
ファイルです。これは、Windowsがほとんどのファイルタイプを処理する方法のインジケータとして拡張子を使用する一方で、実行可能ファイルについては拡張子を無視してその内容を見るという興味深い観察結果を提供します(そうでなければ、.exe
として扱われた場合は機能しません.com
)。この質問はこの効果に関連しています。
command.com
レガシ16ビットバージョン(32ビットインストールでのみ使用可能)を想定しています。これは、Windows 7の私の64bit版には存在しません