今まで、cmd
とcommand
が2つの異なるものだとは思っていませんでした。さて、彼らはいますか?
この写真を見てください:
実際、私は通常、コマンドライン(Git/VIMの場合)を実行したいときはいつでも、[実行]ダイアログからcmd
を開きます。そこで、表示位置、フォント、色などをカスタマイズしました。今日は、変更のために、Runでcommand
ではなくcmd
と入力し、ウィンドウに何か新しいものがあることを発見しました。 ウィンドウに「DOS」が表示されます。
したがって、cmd
とcommand
の間には明らかに違いがあるはずです。私が知りたいのですが
32ビットのコンソールプログラムを実行すると、cmd
によって実行されます。 16ビットのコンソールプログラムを実行すると、command
によって実行されます。
Windows XPには、古い16ビットアプリケーションをサポートするサブシステムが含まれています。
古い16ビットアプリケーションは、DOSプログラムとWindowsプログラムの両方として使用できます。 DOSプログラムはその性質上、コンソールアプリケーションであり、コマンドプロンプトのように動作します。ただし、32ビットWindowsコンソールアプリケーションは非常によく似ており、同じように見えます。
コマンドプロセッサ/インタープリタcmd
にはいくつかの目的があります。
dir
、copy
など)を提供して処理するには.bat
ファイルとNT互換.cmd
ファイル)古い16ビットコンソールプログラムを実行すると、NTVDM(Windows NT仮想DOSマシン)によって実行されます。それはエミュレートされたDOSシステム(したがって仮想DOSマシン)を提供します。これは、専用の仮想マシンソフトウェアの実行と似ていますが、エミュレーションレイヤーが単純です。 command
は、実際にはWindowsプログラムであるcmd.exe
よりも実際のDOSに近い16ビットバージョンのコマンドインタープリターです(command.com
とは異なり、Windows PEヘッダーがあります) DOS MZヘッダーがあります)。
command
は、16ビットプログラムのみをサポートすることを除いて、cmd
と同じ目的を持っています。さらに、.cmd
ファイルをサポートせず、組み込みコマンドが少なく、構文がより制限されています(cmd
は、より新しく、よりモダンで、より高度なコマンドラインインタープリターです。 4DOS )。
ただし、それは(古いゲームのような)グラフィカルDOSプログラムをサポートしますが、それらの実行の成功は、ビデオカードドライバーとプログラムの性質によって異なります。 WindowsでDOSゲームを実行するための さまざまなトリック を提供するサイトは多数あります(ただし、Vista以降での成功は通常、XPよりも制限されます)。
64ビットバージョンのWindowsでは、16ビットプログラムのサポートが完全に削除されているため、command
をまったく含めないでください。DOSもWindows 16ビットプログラムも実行されず、代わりにスローされます。 a(誤解を招く) エラーメッセージ 。
テクニカルノート
command.com
にはDOSプログラムとの後方互換性のために.com
拡張子がありますが、他のほとんどのWindowsバージョンの外部DOSコマンドと同様に、内部的には実際にはWindows PE .exe
ファイルです。これは、Windowsが拡張子をほとんどのファイルタイプの処理方法のインジケータとして使用する一方で、実行可能ファイルの拡張子を無視してその内容を確認するという興味深い観察を提供します(そうでない場合、.exe
は、 a .com
)。 この質問 はこの影響に関連しています。
DOSプログラムであるCOMMAND.COMとは異なり、cmd.exeは通常Win32コンソールで実行されるネイティブWindowsアプリケーションです。これにより、プラットフォーム上のネイティブプログラムで利用できる機能を利用できます。この機能は、DOSプログラムでは利用できません。
また...
OS/2とWindows NTバージョンのcmd.exeの両方に、command.comの包括的な「不正なコマンドまたはファイル名」(不正なコマンドの場合)よりも詳細なエラーメッセージがあります。
これは この情報 ウィキペディアの記事からです。
古いcommand.comコマンドが新しいcmd.exe機能にどのように組み込まれたかについての言及があります...たとえば...
deltree(command.com)の機能は、/ sパラメータの形式でrd(cmd.exe)に組み込まれました。
だから、お気軽に読んでください。
command.com
は、互換性のために提供されているDOSシェルです。
cmd.exe
はOS/2から継承されたネイティブのWin32プログラムです。