Programming Field

DOSプロンプト・コマンドプロンプトとは - DOS コマンド一覧

スポンサーリンク

「DOS コマンド一覧」ではMS-DOSプロンプトやWindowsのコマンドプロンプトで使用できるコマンドを紹介していますが、このページではそもそも「DOSプロンプト・コマンドプロンプトとは何か」について大雑把に説明しています。

プロンプト

プロンプト(prompt)、より正確には「コマンドプロンプト」とは、簡単には「ユーザーの入力を促すための文字表示・記号」のことを指します。例えば

C:\Windows>

という表示が「プロンプト」です。

※ Windowsの「コマンドプロンプト」は「cmd.exe」というプログラムの名前であり、「コマンドプロンプト」という言葉自体は一般的な用語として扱われます。

MS-DOSプロンプトやWindowsのコマンドプロンプトでは上記の表示方法が一般的です(Promptで変更可能です)が、Unix系などのシェルでは

[user@myhostname:~]$

などといった表示もあり、これもプロンプトに含まれます。

プロンプトは入力待ちの状態であり、ここに(主に)キーボードから決まったコマンド(とエンター)を入力することで、そのコマンドに対応する操作・処理を行うことができます。例えばWindowsのコマンドプロンプトで以下のように「ver(エンター)」と入力すると

C:\Windows>ver  (注: 「ver」が入力したもの)

Microsoft Windows [Version 6.1.7601]

C:\Windows>

のようにVerコマンドの実行(バージョン情報の出力)が行われます。なお、このようにコマンド処理を行うのが以下の「コマンドインタープリター」です。

コマンドインタープリター

コマンドインタープリター(command interpreter)とは、単純には「特定のコマンドを解釈して対応する動作を行うプログラム」のことを表します。この「特定のコマンド」というものはコマンドインタープリタープログラムによって異なりますが、例えばMS-DOSプロンプト(Command.com)であれば「Dir」というコマンドを解釈してファイルの一覧を表示(出力)する、という動作を行います。

※ bashやzshなどのプログラムは一般的に「シェル」と呼ばれますが、これらのプログラムもコマンドインタープリターの一種です。ただし「シェル」自体はコマンドインタープリターとは異なる意味でも用いられますのでご注意ください(例として「Windows Shell」はエクスプローラーなどのGUIをメインにプログラム実行などの機能を提供しているシステムです)。

多くの場合、コマンドインタープリターはプロンプトを表示してユーザーにコマンドを入力してもらい、入力されたらそのコマンドを実行して次の入力を待つという「対話型プログラム」となっていますが、これを自動的に実行するために、実行したい一連のコマンドをテキストファイルなどにまとめ、そのファイルを読み込んで処理をするという実装がコマンドインタープリターに入っていることもあります。なお、「バッチファイル」や「シェルスクリプト」などがこの「一連のコマンドを記述したファイル」に当てはまります。

MS-DOSプロンプト

MS-DOSプロンプトはMS-DOSにおけるコマンドインタープリタープログラム「Command.com」、およびその実行状態(プロンプトを表示している状態)を指します。「MS-DOS」はMicrosoft製の「DOS」(Disk Operating System)であり、そのOS上で動作するために作られたコマンドインタープリターがCommand.comとなります。

※ 「DOS」はOSの一種(種別)であり、MS-DOS以外にもIBM社製の「PC-DOS」(IBM PC DOS)や、オープンソースの「FreeDOS」などが存在します。なお、エクスプロイト(脆弱性などを利用した悪意のある行為)の一種である「DoS (Denial of Service)」とは異なります。

MS-DOSのCommand.comはバッチ処理を行うモードと対話型でコマンドを受け付けるモードがあり、前者はバッチファイルに記述されている一連の決まった処理の実行、後者はMS-DOS上での任意プログラムの実行やディスク上のファイル一覧表示・ファイルの移動削除などの操作を提供しています。また、(特殊な設定を行っている場合を除き)OS起動時の「Autoexec.bat」の処理も担っています。

9x系までのWindows(Windows 3.xや95/98/Me)では「VDM」(Virtual DOS Machine; 仮想DOSマシン)機能を利用してCommand.comを実行できるようにし、その機能を「MS-DOSプロンプト」として提供しています。このMS-DOSプロンプトはWindows上でのCUI(Character User-InterfaceまたはConsole User-Interfaceなど; 文字ベースのユーザーインターフェイス)シェルとしての役割も果たしています。

コマンドプロンプト(Windows)

Windowsのコマンドプロンプト(cmd.exe)はWindows NT系システムにおけるCommand.comの代わりとなるプログラムです。この時点では既にGUIベースのシステムとなっているため、コマンドプロンプトはその上で動作するCUIのシェルとなっていますが、Command.comに比べて入力補完機能など多くの機能追加が行われています(一部使用できない機能もあります)。Command.com自身が解釈するコマンドのほとんどはこのコマンドプロンプトで使用可能であり、バッチファイルもほぼそのまま動作します。また、Command.comと同様にプログラムの実行を行うことも可能です(一部制約はあるもののMS-DOSプログラムを含む16ビットのプログラムを実行することもできます)。

※ 16ビットプログラム(およびMS-DOSプログラム)の実行は32ビットOSにおける「NTVDM」プログラムにより実現されており、cmd.exeが提供している機能ではありません(cmd.exeは単に「プログラムの実行」を提供しているのみです)。64ビットOSではこの機能(プログラム)は提供されていないため、16ビットプログラムを実行することはできません。

また、コマンドプロンプトには拡張構文が提供されており、従来のバッチファイルでは表現できなかった複雑な処理をバッチファイルで記述することができるようになっています。

なお、コマンドプロンプトは将来的にはより強力な処理を行うことができるPowerShellに置き換えられるものとされていますが、スクリプト(バッチファイル)の互換性は無く、しばらくはコマンドプロンプトも使用可能な状態が続くと考えられます。