WindowsのCMDとコマンドプロンプトの違いは何ですか?


30

今まで、私はそれを考えたことがなく(観察したこともありません)、cmdそれcommandは2つの異なるものです。まあ、彼らですか?

この写真を見てください:

ここに画像の説明を入力してください

実際、cmdコマンドライン(Git / VIMの場合)が必要な場合は常に[実行]ダイアログから開きます。そこで、表示位置、フォント、色などをカスタマイズしました。今日、変更のために、command代わりに「実行」と入力cmdし、ウィンドウに何か新しいものがあることに気付きました。ウィンドウに「DOS」があります。

だから、明らかに違いがなければならないcmdcommand。私が知りたいのですが

  1. それらの違い。
  2. Microsoftがそれらを分離した理由(UnixとLinuxにはデフォルトで1つのシェル、Bashしかありません)。

11
command.comレガシ16ビットバージョン(32ビットインストールでのみ使用可能)を想定しています。これは、Windows 7の私の64bit版には存在しません
デアHochstapler

11
UNIXおよびLinuxでは、複数のシェルを使用できます。デフォルトのシェルは通常Bashです。
ephsmith

私が言ったことだ@ephsmith ...
スーリヤ

「コマンドプロンプト」というフレーズは、技術的にはcommand.exeまたはcmd.exeのいずれかを指すために使用できますが、実際にはほとんどの場合、cmd.exeを意味するために使用されることに注意してください。
ハリージョンストン

Unixには、csh、ksh、bash、zshの合計4つのシェルがあります。
デブ

回答:


31

TL; DR

32ビットのコンソールプログラムを実行するとcmd、; によって実行されます。16ビットコンソールプログラムを実行すると、によって実行されcommandます。

詳細

Windows XPには、古い16ビットアプリケーションをサポートするサブシステムが含まれています。

古い16ビットアプリケーションは、DOSプログラムとWindowsプログラムの両方として使用できます。DOSプログラムは本来、コンソールアプリケーションであり、コマンドプロンプトのように表示されます。ただし、32ビットWindowsコンソールアプリケーションは非常に似ており、同じように見えます。

コマンドプロセッサ/インタプリタにcmdはいくつかの目的があります。

  • 32ビットテキストのWindowsコンソールプログラムを実行するには
  • 提供し、様々なコマンドライン機能を処理するために(dircopy等)
  • バッチファイルの解釈と実行(DOS互換.batファイルとNT互換.cmdファイル)

古い16ビットコンソールプログラムを実行すると、NTVDM(Windows NT Virtual DOS Machine)によって実行されます。エミュレートされたDOSシステム(仮想DOSマシン)を提供しますが、これは専用の仮想マシンソフトウェアの実行に似ていますが、エミュレーションレイヤーがより単純です。command16ビットバージョンのコマンドインタープリターcmd.exeは、実際にはWindowsプログラムである(そしてcommand.com、DOS MZヘッダーとは異なり、Windows PEヘッダーを持つ)よりも実際のDOSに非常に近いです。

commandcmd16ビットプログラムのみをサポートすること以外は同じ目的です。さらに、.cmdファイルをサポートせず、組み込みコマンドが少なく、構文がより制限されています(4DOScmdと同様、より新しく、より現代的で、より高度なコマンドラインインタープリターです)。

ただし、グラフィカルなDOSプログラム(古いゲームなど)をサポートしていますが、それらを実行できるかどうかは、ビデオカードドライバーとプログラムの性質によって異なります。DOSゲームをWindowsで実行するためのさまざまなトリックを提供するサイトが多数あります(ただし、Vista以降での成功は通常XPよりも制限されます)。

Windowsの64ビットバージョンは16ビットプログラムのサポートを完全にドロップしているため、まったく含めないcommandため、DOSもWindows 16ビットプログラムも実行されず、代わりに(誤解を招く)エラーメッセージがスローされることに注意してください。


テクニカルノート

command.com.comDOSプログラムとの後方互換性のための拡張機能がありますが、外部DOSコマンドの他のほとんどのWindowsバージョンと同様に、内部的には実際にはWindows PE .exeファイルです。これは、Windowsがほとんどのファイルタイプを処理する方法のインジケータとして拡張子を使用する一方で、実行可能ファイルについては拡張子を無視してその内容を見るという興味深い観察結果を提供します(そうでなければ、.exeとして扱われた場合は機能しません.com)。この質問はこの効果に関連しています。


もちろん、cmd.exeから32ビットコンソールプログラムを実行できますが、その必要はありません。コンソールモードの実行可能ファイルをダブルクリックしても、cmd.exeの「内部」は実行されません。同様に、command.exeは実際にはNTVDMと同じものではありません。
ハリージョンストン

1
コマンド名で文を開始するのは嫌いです。
Synetech

> COMMAND.EXEは本当にNTVDMと同じものではありません ありませんが、それはある部分、それの、XPシステム上で動作するように16ビットのコンソールアプリケーションを取得しようとしているときに、いくつかのDLLと一緒に(私はこれに苦労して学びました)。
Synetech

「DOSプログラムは本質的にコンソールアプリケーションです」–なぜこれを言うのですか?非コマンドライン非TUI DOSアプリは何らかの形で「不自然」ですか?:)
カラン

Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? 並べ替え。9xでは問題ありませんでしたが、グラフィカルアプリ(ゲームなど)はXP +ではまったく正しく動作しなくなりました。そのため、最近(Windows)で実行されるDOSアプリの大部分は、実際にはコマンドラインツールではなく本格的なグラフィカルアプリ。64ビットマシンでは、16ビットアプリはネイティブに実行されませんが、特にVistaではフルスクリーンコンソールのサポート廃止されたため、32ビットアプリでさえ通常コンソールアプリです
Synetech

8

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)にロールインされました。

したがって、自由に読んでください。


5

command.com 互換性のために提供されているDOSシェルです。

cmd.exe OS / 2から継承されたネイティブWin32プログラムです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.