内部コマンドと外部コマンドの実行

広告

コマンドプロンプトでは最終的に何らかのアクションを行うために起動します。それは例えばファイルのコピーであったりプログラムの実行であったりします。これらは大きく分けて内部コマンドと外部コマンドの2つに分けることができます。

内部コマンド

まず1つ目は内部コマンドと呼ばれるものです。ディレクトリを移動するための「CD」やファイルをコピーするための「COPY」などがそれに該当します。

内部コマンドはコンピュータの起動時にメモリに読み込まれており、プログラムの実体ファイルなどは存在しません。

コマンドプロンプトから内部コマンドを実行する時は、コマンドプロンプトが現在どのディレクトリにいるのかは気にしなくても構いません。例えば「DIR」コマンドを実行する時は次のようにコマンドプロンプトに入力してからEnterキーを押します。

D:¥>dir

ただし、どのディレクトリで実行したかによって結果は異なってきます。詳しくは各コマンドの解説ページに記載します。

外部コマンド

もう一つは内部コマンドに対して外部コマンドなどと呼ばれるもので、様々なプログラムやバッチファイルなどが該当します。

拡張子が「exe」などのプログラムファイル
拡張子が「bat」なおどのバッチファイル
拡張子が「link」などのショートカットファイル
アプリケーションが関連付けされた拡張子を持つファイル
その他

外部コマンドとして実行されるものは、その実体であるファイルがどこかのディレクトリに格納されていなければなりません。例えばインターネットからプログラムをダウンロードして保存し、その保存されたプログラムをコマンドプロンプトから実行する、といった使い方になります。

外部コマンドを実行する方法としては、まず実行するプログラムのファイルが配置されているディレクトリへ移動してから実行します。例えば「D:¥test¥」ディレクトリにある「sample.exe」というプログラムを実行するには、コマンドプロンプトから次のように実行します。

D:¥test¥>sample.exe

または別のディレクトリにいる時であっても、実行するファイル名をパス付きで指定することで実行することができます。

D:¥>d:¥test¥sample.exe

では実際に試してみます。コマンドプロンプトを起動し、「notepad」と入力してからEnterキーを押して下さい。

p5-1

次のようにメモ帳が起動します。

p5-2

このようにコマンドプロンプトからプログラムを実行することが可能です。

なおこの例では単に「notepad」と入力しましたが、メモ帳プログラムの実際のファイル名は「notepad.exe」です。なぜ拡張子が省略可能なのかはこの後の解説をご覧下さい。また「notepad.exe」が実際に配置されているディレクトリはコマンドプロンプトの現在位置ではありません。このように実際には同じコマンドプロンプトの現在場所と異なるディレクトリにプログラムがあっても、プログラム名だけで実行することができる場合があります。こちらは次のページで詳しく確認します。

拡張子の省略

外部コマンドとして実行されるプログラムのファイル名は「xxxx.exe」や「xxxx.com」のように拡張子が付きます。これらのプログラムを実行する場合、通常は拡張子を省略した形で実行することができます。

例えば「sample.exe」という外部プログラムを実行する場合には単に次のように入力してからEnterキーを押せば実行することができます。

D:¥test¥>sample

拡張子が省略可能なのは、プログラムを実行する時に自働的に拡張子を補完してくれるからです。自動で補完してくれる拡張子は複数あります。拡張子が省略されて実行された場合、順番に拡張子を付け加えて同じファイルが存在しないかどうかを確認し、見つかった場合はそのプログラムを実行します。

どのような拡張子を自動で補完してくれるかは環境変数「pathext」に設定されています。この値を確認するにはコマンドプロンプトから次のように実行して下さい。

set pathext

実際に試すと次のように表示されます。

p5-3

上記のようにデフォルトで設定されている自動で補完される拡張子は次の11個です。

.COM
.EXE
.BAT
.CMD
.VBS
.VBE
.JS
.JSE
.WSF
.WSH
.MSC

この拡張子を上から順に付け加えていき、そのファイルが見つかるかどうかを確認します。見つかればそこで終わりでプログラムを実行します。見つからなければ次の拡張子を付け加えて改めてファイルを探します。

拡張子を捜す順番に注意して下さい。例えば同じディレクトリに「test.exe」と「test.bat」の2つのファイルがあり、コマンドプロンプトから「test」とだけ入力して実行した場合には「.exe」の方が「.bat」よりも優先順位が高いので実行されるファイルは「test.exe」となります。拡張子を省略される場合は、実際にはどの拡張子が補完されて実行されているのかについて注意して下さい。

( Written by Tatsuo Ikura )