コマンドプロンプトとMS-DOSは同じものですか?


12

コマンドプロンプトはWindowsフォーム環境で機能するMS-DOSのGUIバージョンにすぎないと友人と主張しました。彼は私に全く同意しません。

誰が正しいのですか?


2
あなたの研究はこれまでに何を教えてくれましたか?
slhck 2012

4
cmd.exeMS-DOSとはまったく異なる獣です。
Sathyajith Bhat

7
MS-DOSはオペレーティングシステムです。Windowsのコマンドプロンプトは、そのインターフェイスであるルックス MS-DOSのような。
Der Hochstapler 2012


回答:


20

これはかつて真実でしたが、それはもうありません。

MS-DOSから#Windowsコマンドラインインターフェイス-ウィキペディア

Microsoft Windowsのすべてのバージョンには、コマンドラインインターフェイス(CLI)のようなMS-DOSがありました。これにより、多くのDOSとさまざまなWin32、OS / 2 1.x、およびPosixコマンドラインユーティリティを同じコマンドラインセッションで実行できるため、コマンド間のパイプが可能になります。ユーザーインターフェイス、およびWindows 2000までのアイコンは、ネイティブのMS-DOSインターフェイスに準拠しています。

コンシューマーウィンドウ(最大3.11、Win9x、WinME)は、MS-DOSの上で実行されるグラフィカルユーザーインターフェイス(GUI)として実行されました。Windows 95、98、およびMEでは、MS-DOS部分が統合され、両方のオペレーティングシステムを完全なパッケージとして扱いました。コマンドラインは、Windowsモジュール(winoldap.mod)を介してDOSコマンドライン(通常はcommand.com)にアクセスしました。

Windowsの新しいライン(Windows NT)は、Windowsをロードすることを唯一の目的とするカーネルを介して起動します。OS / 2、UNIX、またはコンシューマWindowsがキャラクタモードセッションを起動できるように、ローダーシステムでWin32アプリケーションを実行することはできません。

したがって、NTファミリのすべてのWindows(XP、Vista、7、8など)では、コマンドプロンプトとMS-DOSは視覚的には似ていますが、まったく異なります。


実際、それは決して真実ではなかったと思います。に相当するのcmd.exeは、MSDOSのcommand.comかなり小さな部分です。

9

それらは異なるものです- コマンドプロンプトはMS-DOSではありません -しかし、ユーザーに関する限り、彼らは同じことを同じことで行うことができます。

したがって、それはあなたの視点に依存します。技術的な観点からはあなたの友人は正しいですが、ユーザーの観点からはあなたは正しいです(ある種の専門家が見つける違いがあるように)。


私はあなたが反対の権利を意味すると思いますか?彼は文字通り同じではないので技術的に正しい人です。友達はユーザーにとって同じものなので実際に正しい人です。
ブラッド

@Brad-私が質問を読んだ方法は、OPは同じだと言っていたが、彼の友人は違うと言っていた。
ChrisF

8

番号。

(あなたの平等の定義が過去を超えない限り » それはテキストインターフェースであり、私はそれからプログラムを実行することができます。 «

スタートメニューの[ コマンドプロンプト ]をクリックすると、Windowsコマンドプロセッサ(別名)が実行されますcmd.exe。その組み込みコマンドとスクリプト構文(多くの癖を含む)はcommand.com、CP / Mおよびそれ以降のMS-DOS の古いものに基づいていますが、それ以外は完全に別のものです。また、command.comcmd.exeネイティブのWindowsコンソールアプリケーションであり、16ビットプログラムです。

Windows 95、98、およびME command.com では、Windowsがハイパーバイザーとして機能するMS-DOS VMで実行される点が異なりました(そうです、そのようなことは、当時すでに行われていました)。そこでは、DOSを実行する仮想マシン全体がありました。しかし、Windows NT、2000、XP、Vistaおよび7では、違います。DOS ntvdm.exeは、CPUが直接実行できない呼び出しをキャプチャする薄いエミュレーションレイヤーであるNT仮想DOSマシンでのみ存在します(そのため、CPUは高速で動作しますが、DOSBoxよりも動作が遅くなります)。

いずれにせよ、command.comDOSのシェルにすぎませんでした。それはオペレーティングシステムではありませんでした。

内部では、人々が黒地に灰色のテキストが付いたウィンドウをMS-DOSと呼んでいるのを見るたびに、私は実際にうんざりしています。ほとんどの場合、彼らは実際に彼らが何を指しているのかを知りません。


4

MS-DOSは、マイクロソフトがリリースしたディスクオペレーティングシステムです。コマンドプロンプトは、オペレーティングシステムとの対話を可能にする非グラフィカルインターフェイスです。

コマンドプロンプトは、ほとんどのWindowsオペレーティングシステムで使用できるコマンドラインインタープリターアプリケーションであり、正式にはWindowsコマンドプロセッサと呼ばれますが、コマンドシェルと呼ばれることもあります。コマンドプロンプトは、MS-DOSで使用できるコマンドライン機能の多くをエミュレートするWindowsプログラムですが、実際にはMS-DOSではありません。

コマンドプロンプトは、MS-DOSのcommand.comのGUIバージョンです。cmd.exeは、通常Win32コンソールで実行されるネイティブWindowsアプリケーションです。これにより、プラットフォーム上のネイティブプログラムで利用可能な機能を利用できます。この機能は、DOSプログラムでは利用できません。

たとえば、cmd.exeはOS / 2のネイティブテキストモードアプリケーションであるため、コマンドパイプラインで実際のパイプを使用して、パイプラインの両側を同時に実行できます。その結果、COMMAND.COMとは異なり、cmd.exeの標準エラーをリダイレクトできます。(COMMAND.COMは一時ファイルを使用し、2つのサイドを順番に連続して実行します。)

実際には、cmd.exeはDOSのようなコマンドラインインタープリターとして機能するWindowsプログラムです。一般的に互換性がありますが、COMMAND.COMのいくつかの制限に対処する拡張機能を提供します(上記の説明はWikipediaで参照されています)。


2

あなたの友達は正しいです。MS-DOSは/ DOS用UIが(と呼ばれている(マイクロソフトディスクオペレーティングシステムの頭字語が何の略かである。)オペレーティングシステムだっれる)コマンドプロンプト。

Windowsの最初のいくつかのバージョンはDOSの上で動作しました(技術的に動作する環境になりましたが、誰もそれを区別しているのかはわかりません)が、NTカーネル以降のOSは動作しませんでした-DOSはなくなりました。

しかし、人々は依然としてコマンドプロンプトによって提供される機能を必要としており、command.comの代わりにcommand.exe(および最近のcmd.exe)を取得しました。実行すると、コマンドプロンプトが表示されます。

しかし、それが人々が使用した唯一の(または最初の近くの)コマンドプロンプトだけではありません。コマンドプロンプトはシェルとも呼ばれ、Unixには多くのコマンドがあり、コマンドは異なり、多くの場合非常に強力です。Powerと言えば、MicrosoftはPowerShellと呼ばれるWindows用の新しいコマンドプロンプトを作成しました。これは信じられないほど強力で興味深いものです。詳細については、Wikipediaを参照してください:http : //en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces


> DOS用のUIは、コマンドプロンプトと呼ばれます。 また、「コマンドライン」。
Synetech 2012

およびCLIまたはコマンドラインインターフェイス。
マークアレン

技術的には、CLIはインターフェイスの一種であり、特定のインスタンスではありません。これは、WindowsをGUIと呼ぶようなものです(たとえば、私はWindows GUIを使用しました)。あなたそれ言うことができます、そしてそれは技術的に真実/正確ですが、それは奇妙です。
Synetech 2012

コマンドプロンプトと呼ぶだけです。:)
マークアレン

私はそれを単にDOSと呼んでいます(少なくとも、以前はしばらくの間、しぶしぶ純粋なDOSと呼んでいました)。
Synetech 2012

1

彼らは同じではありません!

どうやら多くの人はDOSプロンプトとWindowsコマンドプロンプトが同じではないことに気づいていません。それらは実際には2つの異なるプログラム-COMMAND.COMとCMD.EXEです。

コマンドプロンプトを知る

まず、プラットフォーム(DOSとWindows)とインタープリター(command.comとcmd.exe)の違いにより、次のような明らかな相違点があります。

  • DOSはウィンドウモードなしでフルスクリーンで実行されるためmode con:cols=COL lines=ROW、コンソールのサイズを変更するtitleコマンドもコマンドもありません。
  • DOSはマルチタスク、マルチユーザー、レジストリ、アクセス許可、長いファイル名、シンボリックリンク/ハードリンク、ネットワーク、Unicode、ダイナミックディスク、高度なボリュームのサポートをサポートしていません...これらを管理するツールはありません

ただし、2つの環境では、command.comとcmd.exeの内部コマンドの機能と構文、および一部の外部ツールにも大きな違いがあります。MS-DOSには

  • 関数、コードブロック()、ローカルスコープはありません。

    • forif...の後には、同じ行に1つのコマンドが続く必要があります
    • いいえexit /bまたはgoto :eof
    • いいえsetlocalendlocal
    • gotoラベルへのジャンプのみ、call別のバッチファイルの開始のみ可能
    • コマンドを次のようにグループ化することはできません

      (
      command1
      command2
      ) >output.txt
      
  • エスケープ文字なし^。特殊文字を印刷するのは面倒で、複数行のコマンドを実行する可能性はありません

  • 特別なフォーマットはありません if
    • いいえif cmdextversionif defined
    • 数値と大文字小文字を区別しない文字列比較なし if [/i] string1 compare-op string2
  • コマンド履歴およびコマンド引数の補完なし
  • いいえ間接的な展開ません(例えばcall set %%var%suffix%=string、変数の)なし遅れ拡張(例えばecho !var%suffix%!
  • 高度な文字列操作はありません
    • ノー~xxxV変数のサポート
    • サブストリング%variable:~num1,num2%またはストリング置換サポートなし%variable:str=newstr%
  • 部分的な変数名に一致しないset、と
    • いいえset /a、あなたは算数をすることができません
    • いいえset /p、ユーザー入力を読むのは面倒です
    • 何のset "var=value"構文はありません
  • %*コマンドライン全体でいいえ
  • いいえfor /dfor /rまたはfor /l。ノーfor /fファイルから読み込むので、入力も困難です。forDOS の唯一の形式はFOR %variable IN (set) DO command [command-parameters]
  • いいえfindstrfindUnicodeをサポートしていません
  • のような特別な環境変数はありません%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • 限られたディレクトリ変更機能
    • 番号 pushd/popd
    • いいえcd /d。また、いいえcd path with spacescd "path with spaces"長いファイル名のサポートがないため
  • 番号 color
  • 番号 forfiles
  • いいえassoc(GUIがなく、ファイルをコマンドラインから手動で開く必要があるため、ファイルの関連付けは必要ないため)

where、sort、more(一部のDOSバージョン)、choice ...のようなWindowsの便利な外部コマンドの多くはDOSにもありません


そして、これはMSのリッチターナーが言ったことです

また、Cmd!= MS-DOS!

また、上記のような記事によって永続化される一般的な誤解を指摘したいと思います。Cmd<> MS-DOS!

実際には:

  • Microsoftは、2000年9月16〜16年前(この記事の執筆時点)に、MS-DOSの「新しい」バージョン(Windows MEではv8.0)を最後に出荷しました。
  • MS-DOSはオペレーティングシステム(今日の標準では比較的シンプルなOSですが)であり、その主要なユーザーインターフェイスはコマンドラインシェルでした。
  • MS-DOSのコマンドラインシェルのスクリプト言語は比較的簡潔で適度に強力でしたが、現在のPowerShell、Bashなどで使用できる、より豊富で高度な機能の多くが欠けていました。
  • 新しいバージョンのMS-DOSは洗練されて成長し、古いアセンブリを追加して「C」で記述された新しいコードに置き換えましたが、MS-DOSの多くは効率のためにx86アセンブリで記述されたままでした。多くのハードウェアデバイスと周辺機器にアクセスできます。これにより、MS-DOSは非x86 CPUに移植できなくなりました。意欲がある場合は、MS-DOS v1.1およびv2.0のソースコードを実際にダウンロードして、MS-DOSの以前のバージョンのどれだけがx86アセンブリで記述されているかを確認できます(ヒント:ほとんどすべてのそれ)!

https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/


参考文献

結論として、機能的にはそれらは少し似ているかもしれませんが、それ以外は大きく異なります


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