外部コマンド実行時にプログラムの検索が行われるディレクトリ

広告

コマンドプロンプトから外部コマンドを実行した場合、コマンドプロンプトの現在位置のディレクトリの中に実行しようとしているファイルが存在するかどうかを確認します。もし見つかれなかった場合にはエラーが表示されます。

ただし実行するプログラムをパス付きで指定した場合には他のディレクトリにプログラムがあっても実行できます。

D:¥>c:¥program¥test.exe

上記の場合であればCドライブの中にある「program」ディレクトリの中に格納された「test.exe」ファイルを実行します。

このようにファイルにパスを付けて実行すれば他のディレクトリに格納されている外部コマンドを実行できますが、予めプログラムを保存して置くディレクトリを登録しておき、プログラムを実行する場合にはそのディレクトリの中に実行ファイルが無いかどうかチェックしてもらうことが可能です。

先ほどの場合で言えば、「c:¥program」が外部プログラムの実行時にファイルが格納されていないかどうかを自動で調べるディレクトリとして登録されてあば、単に次のように実行することができます。

D:¥>test.exe

ではコマンドを実行する時にどのディレクトリを自動で探しにいくように設定されているのかを確認するには環境変数「path」に設定されています。設定されている値を確認するにはコマンドプロンプトから次のように実行して下さい。

path

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

p9-1

非常に多くの値が設定されています。デフォルトで設定されているものもありますし、新しいプログラムをインストールする時にPATHを設定するようになっているものもあります。

PATHの値には外部コマンド実行時にプログラムを探しに行くディレクトリが順に記述されています。区切り文字はセミコロン(;)です。設定されている値の最初の方だけを取り出してみると次のように記述されていることが分かります。

PATH=C:¥Windows¥system32;C:¥Windows;C:¥Windows¥System32¥Wbem;

これは外部コマンドを実行時に自働的に探しにいくディレクトリが次の通りということを表しています。

C:¥Windows¥system32
C:¥Windows
C:¥Windows¥System32¥Wbem

この3つのディレクトリに格納されているプログラムなどについては、コマンドプロンプトから実行する場合に、わざわざディレクトリまで移動してから実行する必要はありません。また実行するプログラムにパスを追加して実行する必要もありません。

前のページのサンプルでメモ帳を実行する時に単に「notepad」とだけ実行していましたが、これは「notepad.exe」が環境変数PATHに設定された「C:¥Windows」ディレクトリに格納されているためです。

p9-2

このため、コマンドプロンプトの現在位置がどのディレクトリにある場合でも、単に「notepad」と実行すればプログラムを起動することができます。

外部コマンドを実行する場合に意図しないプログラムが実行されてしまった場合には、環境変数PATHの値を確認しどのディレクトリへプログラムを探しに行っているのかを確認するようにして下さい。

( Written by Tatsuo Ikura )